EXISTS と NOT EXISTS

もしサブクエリが行を返せば、
EXISTS subquery は TRUE で、
NOT EXISTS subquery は FALSE です。

もともと、EXISTS サブクエリは SELECT * で開始しますが、
SELECT 5 や SELECT column1、またそれ以外のどんな物でも開始する事ができます。
MySQL はそのようなサブクエリの中では SELECT リストを無視するので、何も変わらないのです。


select distinct Language from CountryLanguage
where CountryCode IN(
select Code from Country where
GovernmentForm = 'Monarchy')
order by Language;

select Language from CountryLanguage
where CountryCode IN(
select Code from Country where
GovernmentForm = 'Monarchy')
group by Language
order by Language;

select_sub

以下のINを使ったサブクエリーとEXISTSを利用したサブクエリーは同じ値を返す。


select Name from Country where Code IN
(select CountryCode from CountryLanguage
where Language = 'German')
Order by Name;

in


select Name from Country where EXISTS
(
select * from CountryLanguage
where Code = CountryCode
AND Language = 'German'
)
Order by Name;

exists


select Name from Country where EXISTS
(
select CountryCode from CountryLanguage
where Code = CountryCode
AND Language = 'German'
)
Order by Name;

code_5

参考サイト
12.2.8.6. EXISTS と NOT EXISTS