exists句の使い方を解説 SQL入門
exists句とは?
サブクエリ内で実行されたクエリの結果を確認し、
条件に合致するもののみを利用する方法です。
参考文献
SQL初心者の人には、これが一番おすすめの本になると思います。
丁寧な解説から、練習問題も豊富に用意されているので、
これからSQLを使っていくという方には、ぜひ読んでいただきたい本になります。
スッキリわかるSQL入門 第2版 ドリル222問付き! (スッキリシリーズ)
- 作者: 中山清喬,飯田理恵子,株式会社フレアリンク
- 出版社/メーカー: インプレス
- 発売日: 2018/11/30
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る
書き方
さて、exists句の書き方は、このようになります。
SELECT a, b, c FROM table_A as A WHERE EXISTS ( SELECT d FROM table_B as B WHERE #table_Aのaとtable_Bのdというカラムを比較 A.a = B.d )
サブクエリ内でtable_B
からdというカラムを抽出しました。
そして、table_A
のaとtable_B
のdというカラムを比較して、
同じ値が入っている(table_A.a = table_B.b
)行のみ、利用されます。
具体例
先程ご紹介した、書籍が運営しているSQL練習サイトに移動し、
実際にexists句
を使ってみましょう。
スッキリわかるSQL入門 第2版 ドリル222問付き! (スッキリシリーズ)
- 作者: 中山清喬,飯田理恵子,株式会社フレアリンク
- 出版社/メーカー: インプレス
- 発売日: 2018/11/30
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る
対象テーブル
利用するテーブルは"家計簿"と"家計簿アーカイブ"というテーブルです。
家計簿
2013年2月の入出金が記録されているテーブルです。
家計簿アーカイブ
過去の入出金が記録されているテーブルです。
実践
家計簿と家計簿アーカイブテーブルの費目カラムを参照して、
家計簿アーカイブの費目に存在する値が家計簿テーブルに存在すれば利用する。
また、家計簿アーカイブの出金額テーブルを参照し、500円以上の費目を利用する。
この2つの条件を満たすクエリは以下のようになります。
select 費目, 出金額 from 家計簿アーカイブ as A where exists ( select * from 家計簿 as B where 出金額 > 500 and A.費目 = B.費目 )
実行結果
さて、実行結果はこのようになります。
出金額が500円以上かつ、家計簿アーカイブの費目と家計簿の費目を比較して、
家計簿アーカイブの費目に存在する値のみ利用されております。
まとめ
このようにexists句を利用すると、サブクエリ内の結果を参照し、
条件に合致するものを用いて処理することができます。