SQLの相関サブクエリの解釈で間違いがあれば訂正していただきたいです。
サブクエリとはSELECT文の中に入れ子するSELECT文のこと、セレクトした結果得られたテーブルを更にセレクトするときに等に使う。
WHEREと組み合わせてひとつの要素だけ、つまりスカラ値のみをセレクトして検索条件にすることが出きる。
例えば部署ごとの身長の平均値等を元に平均以上の人物を検索したい。部署ごとの平均値が必要なためその時点でスカラ値ではなくなる。そこで使えるのが相関サブクエリである。
それではどのようにしてスカラ値として値を取り出すか?
それは簡単な変更を三点施すだけで実現できる。
クエリ、サブクエリ、どちらのセレクトも同じテーブルをセレクトするのでSQL文内で区別するためにそれぞれのテーブルにアダ名をつけてやる。まずこの二つの変更を行う。
次にサブクエリ内に「WHERE テーブル1.身長=テーブル2.身長」を追加する。
このウェア句は特別でテーブルのどのカラムの要素を繰り返し比較するかを 指定している。
つまり指定したカラムから1要素ずつスカラ値として取り出せるようになる。このウェア句の処理を「バインドする」という。
バインドするカラムを変更すれば別の検索条件を設定することも簡単にできる。
最後にSQL文全体を俯瞰してみてみる。クエリのウェア句の入れ子として相関サブクエリがバインドされたカラムのスカラ値を返す処理を繰り返し、その度に外側にあるクエリのセレクトが実行されると言う処理が行われている。
ご教授願います。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/06/21 06:34