1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

SQLの副問い合わせを使ってみる

Posted at

##概要
SQLの副問い合わせについてあまり知見がなかったので、理解できた範囲で少しまとめてみたいと思います。

#####副問い合わせとは
「副問い合わせとは、あるselect文の結果を別のSQL文で利用することです。
サブクエリとも呼ばれます。クエリ(query)は、問い合わせという意味です。」
参考:SQL 副問合せのサンプル(サブクエリ)

select使用時の副問い合わせのある場所はwhere、from、select、having。
また、selectだけではなくinsertやdelete、update文でも使用可能のようです。

例:各都道府県名とidが格納されたprefectureテーブルとユーザー情報が格納されたテーブルが存在するとする。ユーザー情報の出身地にはprefectureテーブルのidが紐づいている。

特定の都道府県出身のユーザーを取得したい場合は下記のように取得することができる。

####検索条件
※userテーブルのlocalとprefecturesテーブルのidは外部キーとして連携しているとする。

特定の商品を購入した購入者情報を特定したいとき。

  1. 特定の商品が複数の時はIN句を使用
   SELECT * FROM user
   WHERE user.id
   IN (
    SELECT user_id
    FROM purchase_history
    WHERE product_id
    IN (1, 2, 3)
    );

他にもさまざまな方法があるようです。
jooqなどでも副問い合わせを書くことは可能なので、押さえておきたいです。
jooq使用方法のまとめ

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?