副問合せでどれかにマッチする場合は ANY で
さて、副問合せの問題では、こんな表を使いましょう。
生徒テーブルと、成績のテーブルですね。
この2つのテーブルから、国語でも算数でもいいから、50点以上取った生徒を検索したい、
とすると。
SELECT 生徒テーブル.名前
FROM 生徒テーブル
WHERE 50 <=
ANY ( SELECT 点数 FROM 成績テーブル
WHERE 生徒テーブル.生徒ID = 成績テーブル.生徒ID )
こんな風に、ANY を使います。
副問合せ(サブクエリ)で、点数の結果を出しておいて、それらが50点以上だったら、という検索をします。
これを副問合せを使わない方法でも書けます。
SELECT DISTINCT 生徒テーブル.名前
FROM 生徒テーブル, 成績テーブル
WHERE 生徒テーブル.生徒ID = 成績テーブル.生徒ID
AND 成績テーブル.点数
成績テーブルから点数を検索した後に、重複をDISTINCTで省きます。
どちらも同じ結果が得られますね。