副問い合わせとは
select文、update文、insert文、delete文内で、あるselect文の結果を使用すること。
サブクエリとも呼ばれる。(クエリ=問い合わせ)
select文では、where句、from句、select句、having句で使用できる。
今回はそのうちのwhere句での副問い合わせについてまとめます。
select文where句での副問い合わせ
今回は下記2テーブルを用意してみました。
「PERSONAL_INFO_TBL」で従業員の基本データを管理し、
「JOB_CATEGORY_TBL」でその人の業務内容を管理しているようなイメージです。
PERSONAL_INFO_TBL
ID | NAME | AGE | JOB_ID |
---|---|---|---|
1 | 齋藤 | 20 | 101 |
2 | 佐藤 | 25 | 102 |
3 | 山田 | 30 | 103 |
JOB_CATEGORY_TBL
ID | CATEGORY |
---|---|
101 | エンジニア |
102 | 営業 |
103 | 企画 |
では「PERSONAL_INFO_TBL」から「JOB_ID = 102」のデータを、
副問い合わせを使って取得したいと思います。
SELECT * FROM PERSONAL_INFO_TBL WHERE JOB_ID = (SELECT ID FROM JOB_CATEGORY_TBL WHERE ID = 102);
個人的に()内を102と読み替えるとわかりやすかったです。
副問い合わせ文では、「JOB_CATEGORY_TBL」から102という値を取得しています。
副問い合わせのメリット
主に下記が挙げられます。
・複数のSQL文を1文で記載することができる
・どのテーブルのデータなのかひと目で理解できるなど、可読性が高い
・結合をする必要がなくなる
さいごに
ここまで読んでいただきありがとうございます!
現場で副問い合わせを使用していた際に自信がなかったため、
今回は自分自身の復習と整理のために記事にまとめてみました。
自分の記録が誰かのお役に立てると嬉しいです。。