X


SQLの副問合せというのは、テーブルの検索結果をさらに検索ということであってる?

■ このスレッドは過去ログ倉庫に格納されています
1以下、5ちゃんねるからVIPがお送りします
垢版 |
2023/03/14(火) 14:51:05.490ID:sXDoa0JZdPi
一回目のSELECT
上の結果のSELECT←副問あわせ?
2以下、5ちゃんねるからVIPがお送りします
垢版 |
2023/03/14(火) 14:51:08.669ID:SOs3+ga6rPi
ポーアイカレー おいしい 塩田
2023/03/14(火) 14:52:01.341ID:ZvCD00rV0Pi
先に副問合せするんだぞ
4以下、5ちゃんねるからVIPがお送りします
垢版 |
2023/03/14(火) 14:52:09.405ID:18QxCP2w0Pi
はい、その通りです。副問合せは、内部的には別のテーブルとして扱われ、そのテーブルからさらに検索を行うことができます。副問合せを使用することで、より複雑な検索条件や集計処理などを実現することができます。
5以下、5ちゃんねるからVIPがお送りします
垢版 |
2023/03/14(火) 14:53:21.287ID:IpXHTxf5aPi
人工知能に聞くな
2023/03/14(火) 14:53:36.984ID:+3IOtf2j0Pi
ざっくり書くと文法的には入れ子になっててセレクト文の中に更にセレクト文を書く
マトリョーシカみたいなもん

んで実行すると内側から解決されていく
7以下、5ちゃんねるからVIPがお送りします
垢版 |
2023/03/14(火) 14:54:46.360ID:sXDoa0JZdPi
>>3
あっ先のテーブル取得を服問い合わせって言うの?
8以下、5ちゃんねるからVIPがお送りします
垢版 |
2023/03/14(火) 14:55:31.090ID:7R10CBIcHPi
実行計画とってみれば?
9以下、5ちゃんねるからVIPがお送りします
垢版 |
2023/03/14(火) 14:55:48.421ID:sXDoa0JZdPi
>>6
ありがと、最初の結果のことを副問合せで、
その結果をSELECTすることをなんというのかな?
10以下、5ちゃんねるからVIPがお送りします
垢版 |
2023/03/14(火) 14:55:55.771ID:6XXxl0XqaPi
サブクエリはメインクエリに関係ないクエリでも大丈夫だよ
そのままselectに入れたり別条件で取ってきた値をwhere句に指定したり
11以下、5ちゃんねるからVIPがお送りします
垢版 |
2023/03/14(火) 14:57:41.039ID:wkIgV4MGdPi
いいえ。
12以下、5ちゃんねるからVIPがお送りします
垢版 |
2023/03/14(火) 14:57:51.448ID:sXDoa0JZdPi
>>10
なるほど
よくわからん。。
13以下、5ちゃんねるからVIPがお送りします
垢版 |
2023/03/14(火) 14:58:52.747ID:6XXxl0XqaPi
select (select `カラム` from `テーブル1`) as `テーブル1カラム` ←これがサブクエリ
メインクエリの中に入った()で囲まれたクエリのことだと思えばイメージしやすいんでは?
14以下、5ちゃんねるからVIPがお送りします
垢版 |
2023/03/14(火) 15:00:19.934ID:o3Bub+sbaPi
>>13
(´・ω・`)にほんごでたのむなの。
15以下、5ちゃんねるからVIPがお送りします
垢版 |
2023/03/14(火) 15:01:51.758ID:6XXxl0XqaPi
例えば最新の注文が登録された日のデータを取得するとかってなった場合
where `date` = (select max(`date`) from `table`)
みたいにするのね
16以下、5ちゃんねるからVIPがお送りします
垢版 |
2023/03/14(火) 15:04:03.869ID:6XXxl0XqaPi
select文が;で区切られて発行されてる場合は上のselectと下のselectになんの関連性もないからこれはサブクエリではない
一緒にselectクエリ発行してるだけ
2023/03/14(火) 15:05:01.832ID:sXDoa0JZdPi
>>15
それはわかる
18以下、5ちゃんねるからVIPがお送りします
垢版 |
2023/03/14(火) 15:05:18.639ID:Pamr3+3R0Pi
select * from ken where choumei in (select choumei from shikuchouson where banchi < 4);

みたいな
市区町村テーブルにある番地が4より少ない町が何県に含まれているか県テーブルで検索みたいな
19以下、5ちゃんねるからVIPがお送りします
垢版 |
2023/03/14(火) 15:06:06.182ID:pEmXF1pOpPi
>>4
20以下、5ちゃんねるからVIPがお送りします
垢版 |
2023/03/14(火) 15:07:36.354ID:sXDoa0JZdPi
>>16
なるほど、;で区切られてないやつは
もう副問合せなわけだ
21以下、5ちゃんねるからVIPがお送りします
垢版 |
2023/03/14(火) 15:13:08.583ID:mQf63uC90Pi
サブクエリって結構どこでも使えるけど
selectされた一件一件に対して行うような使い方はめちゃくちゃ重くなる
22以下、5ちゃんねるからVIPがお送りします
垢版 |
2023/03/14(火) 15:17:23.790ID:fIrlvZWBaPi
>>20
覚え方としてはクエリの中に現れて、()で囲まれてるselect文
みたいな感じのほうがいいと思うぞ

>>21
select句で使うよりはサブクエリで取得したものをjoinするとかのほうがいいのかな
この辺の最適化はあんまりよく分からんけども
■ このスレッドは過去ログ倉庫に格納されています