##概要
SQLの副問い合わせについてあまり知見がなかったので、理解できた範囲で少しまとめてみたいと思います。
#####副問い合わせとは
「副問い合わせとは、あるselect文の結果を別のSQL文で利用することです。
サブクエリとも呼ばれます。クエリ(query)は、問い合わせという意味です。」
参考:SQL 副問合せのサンプル(サブクエリ)
select使用時の副問い合わせのある場所はwhere、from、select、having。
また、selectだけではなくinsertやdelete、update文でも使用可能のようです。
例:各都道府県名とidが格納されたprefectureテーブルとユーザー情報が格納されたテーブルが存在するとする。ユーザー情報の出身地にはprefectureテーブルのidが紐づいている。
特定の都道府県出身のユーザーを取得したい場合は下記のように取得することができる。
####検索条件
※userテーブルのlocalとprefecturesテーブルのidは外部キーとして連携しているとする。
特定の商品を購入した購入者情報を特定したいとき。
- 特定の商品が複数の時はIN句を使用
SELECT * FROM user
WHERE user.id
IN (
SELECT user_id
FROM purchase_history
WHERE product_id
IN (1, 2, 3)
);
他にもさまざまな方法があるようです。
jooqなどでも副問い合わせを書くことは可能なので、押さえておきたいです。
jooq使用方法のまとめ