0
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の基礎について学ぶ#08

Last updated at Posted at 2021-01-17

 今回はSQL文の内部に別のSELECT文を記述する副問い合わせについて説明していきたいと思います!!副問合わせの機能を用いることで、1つのSQL文で2つ以上の処理を行うことができます。

過去の関連投稿

SQLの基礎について学ぶ#01
SQLの基礎について学ぶ#02
SQLの基礎について学ぶ#03
SQLの基礎について学ぶ#04
SQLの基礎について学ぶ#05
SQLの基礎について学ぶ#06
SQLの基礎について学ぶ#07

1. 検索結果に対して結果表を操作する

accountテーブル

date(日付) name(項目名) price(金額)
2020-12-03  食費   800
2021-01-03  交通費   600
2021-05-22  食費   1000
2021-03-14  日用品   1400

① 2つのSELECT文が必要な例

例:最も大きい金額とその項目名を取得する

SELECT MAX(price) FROM account  /* 1行目のSELECT文の結果 => 1400 */
SELECT name, price FROM account
 WHERE price = 1400             /* 1行目のSELECT文の結果(1400)を記述 */

結果

name price
日用品 1400
▶ 1つめのSELECT文で最も大きい金額1400円を取得
▶ 2つめのSELECT文で金額1400円に対応する項目名を取得

② SELECTのネスト

①では2つのSQL文を用いましたが、1つのSQL文で①を記述することができます。

SELECT name, price FROM account
 WHERE price = ( SELECT MAX(price) FROM account )  /* SELECT文をネスト */

結果

①の結果と同じ

▶ このように、ある構造に対して別の構造が含まれていることをネスト構造入れ子構造と呼びます。
▶ SQL文の一部として含まれているSELECT文のことを副問合わせ副照会サブスクエリと呼びます。
▶ ほかのSQL文の一部として登場する副問い合わせは、丸括弧()で閉じます。

③ 副問合わせの処理

SELECT name, price FROM account
 WHERE price = ( SELECT MAX(price) FROM account )  /* SELECT文をネスト */

 副問合せの動作は、丸括弧()で囲まれているSELECT文が先に実行されて結果に化けた後に外側のSQL文が実行されます。

2. 副問い合わせの3パターン

① 単一の値の代わりとして、服問い合わせの検索結果を用いるパターン

price(金額)
1000
▶ 検索結果が1行1列の値となる副問合わせ
SELECT文の選択列リストFROM句UPDATEのSET句に使用できる。また、1つの値の判定を行うWHERE句の条件式としても使用

② 複数の値の代わりとして、服問い合わせの検索結果を用いるパターン

price(金額)
800
600
1000
1400
▶ 検索結果がn行1列の値となる副問合わせ(n>1)
SELECT文の選択列リストFROM句に使用できる。また、複数の値の判定を行うWHERE句の条件式としても使用

③ 表の値の代わりとして、服問い合わせの検索結果を用いるパターン

name(項目名) price(金額)
 食費   800
 交通費   600
 食費   1000
 日用品   1400
▶ 検索結果がn行m列の値となる副問合わせ(n>1, m>1)
SELECT文FROM句INSERT文に使用

3. まとめ

 今回は以上になります。副問合せの3パターンについては、次回の投稿以降に例文(SQL文)を示して説明していきたいと思います。
 何か間違い等ありましたら、コメントお願いします。引き続きSQLについて学んでいきたいと思います。

0
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
0
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?