「EXISTS」とは
「EXISTS」は、「サブクエリ」を扱う仕組み。SELECT文で取得したものを、SELECTやUPDATE処理で使用することを指す。
/*! 構文 */
SELECT [表示要素名] FROM [テーブル名]
WHERE EXISTS (
[入れ子にするSELECT文]
);
サンプル
SELECT * FROM company WHERE EXISTS (
SELECT * FROM company_sub
WHERE company.id = company_sub.id AND user_sub.name = "A社"
);
###テーブル同士のひも付き
WHERE company.id = company_sub.id AND company_sub.job = "A社"
「company.id = company_sub.id」部分で、テーブル同士のひも付けを指定し、これによってcompanyテーブル側と、company_subテーブル側で連携が取れており、この記述がないと以下のように全部が表示されてしまう。
SELECT * FROM company WHERE EXISTS (
SELECT * FROM company_sub
WHERE company_sub.job = "A社"
);
テーブル同士のひも付きの漏れがないか注意が必要。