SQLの副問合せというのは、テーブルの検索結果をさらに検索ということであってる?
■ このスレッドは過去ログ倉庫に格納されています
一回目のSELECT
上の結果のSELECT←副問あわせ? はい、その通りです。副問合せは、内部的には別のテーブルとして扱われ、そのテーブルからさらに検索を行うことができます。副問合せを使用することで、より複雑な検索条件や集計処理などを実現することができます。 ざっくり書くと文法的には入れ子になっててセレクト文の中に更にセレクト文を書く
マトリョーシカみたいなもん
んで実行すると内側から解決されていく >>3
あっ先のテーブル取得を服問い合わせって言うの? >>6
ありがと、最初の結果のことを副問合せで、
その結果をSELECTすることをなんというのかな? サブクエリはメインクエリに関係ないクエリでも大丈夫だよ
そのままselectに入れたり別条件で取ってきた値をwhere句に指定したり select (select `カラム` from `テーブル1`) as `テーブル1カラム` ←これがサブクエリ
メインクエリの中に入った()で囲まれたクエリのことだと思えばイメージしやすいんでは? 例えば最新の注文が登録された日のデータを取得するとかってなった場合
where `date` = (select max(`date`) from `table`)
みたいにするのね select文が;で区切られて発行されてる場合は上のselectと下のselectになんの関連性もないからこれはサブクエリではない
一緒にselectクエリ発行してるだけ select * from ken where choumei in (select choumei from shikuchouson where banchi < 4);
みたいな
市区町村テーブルにある番地が4より少ない町が何県に含まれているか県テーブルで検索みたいな >>16
なるほど、;で区切られてないやつは
もう副問合せなわけだ サブクエリって結構どこでも使えるけど
selectされた一件一件に対して行うような使い方はめちゃくちゃ重くなる >>20
覚え方としてはクエリの中に現れて、()で囲まれてるselect文
みたいな感じのほうがいいと思うぞ
>>21
select句で使うよりはサブクエリで取得したものをjoinするとかのほうがいいのかな
この辺の最適化はあんまりよく分からんけども ■ このスレッドは過去ログ倉庫に格納されています