副問合せの ANY を IN で書き換えてみよう | データベース初心者の基礎知識ブログ

副問合せの ANY を IN で書き換えてみよう

さて、副問合せの ANY ですが、IN 演算子を使っても書き換えられます。

20100902_08.jpg

このテーブルで

この2つのテーブルから、国語でも算数でもいいから、50点以上取った生徒を検索したい、

とすると、

SELECT 生徒テーブル.名前
FROM 生徒テーブル
WHERE 50 <=
ANY ( SELECT 点数 FROM 成績テーブル
WHERE 生徒テーブル.生徒ID = 成績テーブル.生徒ID )

これは、IN 演算子を使ってこんな感じです。

SELECT 生徒テーブル.名前
FROM 生徒テーブル
WHERE 50 <=
IN ( SELECT 点数 FROM 成績テーブル
WHERE 生徒テーブル.生徒ID = 成績テーブル.生徒ID )