パソコン・スマホの困ったを助けます!
SQL

2つのselect文を1つにする〜副問い合わせ、ネスト〜

同じテーブルの同じ列名の中で知りたい情報が2つあるときは

SQL文を2回書かなければ、と思うあなた

そんなSQL文を1つにまとめることができます。

 

それを副問い合わせ、selectをネストすると言います。

 

1つのSQLで2つの内容を求める

副問い合わせ、selectをネストする方法を解説します。

副問い合わせ、selectをネストする

実際に副問い合わせのSQL文を書いていきます。

select 列名, 列名 from テーブル名

where 列名

= (select 列名 from テーブル名);

となります。

 

次に実際に副問い合わせを使います。

スマホが家に持ち込む危険性を知っていますか?

家に帰宅したら手洗いうがい、

マスクをする以前に大事なことです。

しかし手を洗った後にスマホを必ず触りますよね?

ではそのスマホはキレイですか?

この危険性に気づけたあなたはこちら

が必要なこともわかりますよね?

 

実際にselectをネストする

例えばこのようなテーブルがあります。

テーブル名;プレゼント

購入日 品目 費用
2020/07/15 18000
2020/07/14 髪飾り 5000

このテーブルから最大の費用に関する品目と費用を知りたい

この項目の少ないテーブルでは一目みれば最大の費用と品目はわかりますが、

実際にはより膨大なデータ量をSQLで取り扱います。

その中の一部だと考えてください。

 

ここで最大の費用と品目を知るためにSQLを入力していくと

 

select max(費用), 品目 from プレゼント where 費用 = ,,,,,

となります。

それはどうしてかwhere 費用 =の先に入力する値は

max(費用)の値だからです。

しかしまだwhereにたどり着くまでにmaxの処理は終わっていません。

無理やりmax(費用)と入力するとエラーが出てしまいます。

 

それを回避するためには、

select max(費用) from プレゼント;

select 品目,費用 from プレゼント where 費用 = (1つ目のSQLで出た数値);

と入力することでエラーを回避できます。

 

しかしこれではSQL文を二度書く手間に。

そこでこの副問い合わせを使用すると

select 品目, 費用 from プレゼント

where 費用 = (select max(費用) from プレゼント);

と入力することで1つのSQLにできました。

 

まとめ

副問い合わせの基本的な部分に触れていきました。

ABOUT ME
アバター
TANSAN
某パソコンショップ店員がパソコン・スマホで困った!という悩みを解決していきます。 ITパスポートの攻略法も随時更新中! PC・スマホで困ったことがあればTwitterのDMまで! 名前の由来は炭酸水が好きなので、でも間違えないでください 私の炭酸水好きは炭酸水が騒がれ始める10年も前から好きなんです。 サイト作りのコンセプトは「赤ちゃんでもパソコン・スマホの設定できるわかりやすいサイト作り」です。 私TANSANとUseful Labどっちもよろしく!!