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;
以下のINを使ったサブクエリーとEXISTSを利用したサブクエリーは同じ値を返す。
select Name from Country where Code IN
(select CountryCode from CountryLanguage
where Language = 'German')
Order by Name;
select Name from Country where EXISTS
(
select * from CountryLanguage
where Code = CountryCode
AND Language = 'German'
)
Order by Name;
select Name from Country where EXISTS
(
select CountryCode from CountryLanguage
where Code = CountryCode
AND Language = 'German'
)
Order by Name;