EXISTS述語
特定のtableのcolumnの値が、別のtableのcolumnに存在するかどうかを確認したい時に使う
EXISTSの中で見るtableとJOINしているかどうかで挙動が変わる
結合しない場合、exists内のSQLで値が存在したとき、外側のSQLが実行される
exists内のSQLで値が存在しないときは、外側のSQLは実行されない
存在判定
結合した場合、外側のSQLが実行されてexists内のSQLが実行される
こんなわけわからん命名したの誰やねんmrsekut.icon
Oracleでは全く同じという記事を見かけたmrsekut.icon
subqueryって何を返すの?
0/1でいいの?
existsって述語だから返り値はbooleanだと思うけど、
subqueryがSELECT * ..だとちょっとわかりにくい気がする
SELECT 1 ..でいいのかな
というか理想的にはSELECT句自体が不要な気がする
構文として正しいのかわからないけど
code:sql
SELECT *
FROM table_a AS ta
WHERE EXISTS (
SELECT 1
FROM table_b AS tb
WHERE tb.col1 = ta.col1
);
tb.col1の中にta.col1と同じ値があれば、それを取得する
taの中から、条件にあるものを取りたい
その条件が、tb.col1と同じものであるかどうか
NOT EXISTSとかは、JOIN使えば代替できそうな気がするけどどうなんだろう #?? パフォーマンス的にもどちらが良いのだろう