これまで、特定の列の値に一致する、もしくは一致しないデータや、特定の値を(超える/未満)のデータ・(以上/以下)のデータに絞り込む方法を学んできました。
しかし、それだけの知識では求めるデータに辿り着けない場合があります。
例えば、users テーブルがあるとして、職種が A の人で、かつ登録年月日が 2021 年の間で・・・といったように、いくつかの条件を組み合わせてデータを抽出したい場合などです。
ここでは、複数の条件に合致するデータに絞り込む方法を学んでいきます。
列 A の値が値 1 もしくは列 B の値が値 2 であるレコードに絞り込みたい場合
SELECT * FROM <テーブル名> WHERE 列A = 値1 OR 列B = 値2;
列 A の値が値 1 であり、かつ、列 B の値が値 2 であるレコードに絞り込みたい場合
SELECT * FROM <テーブル名> WHERE 列A = 値1 AND 列B = 値2;
OR
: 前後に記述した条件のうち、いずれかの条件を満たす行に絞り込みます。
AND
: 前後に記述した条件の両方を満たす行に絞り込みます。
OR
や AND
は複数回使うことができるので、条件1 AND 条件2 OR 条件3
などの記述も可能です。
ただし、AND
は OR
より優先度が高いので、もし 条件1 AND 条件2 OR 条件3
と書いたら、条件 1 かつ条件 2 を満たすデータか、もしくは条件 3 を満たすデータ、つまり (条件1 AND 条件2) OR 条件3
と同義となります。
条件 1 かつ、条件 2 または条件 3 を満たすものとしたい場合は、AND
より優先度が高い ()
で括り、条件1 AND (条件2 OR 条件3)
とします。
SELECT * FROM products WHERE price = 4000 OR price = 480;
SELECT * FROM users WHERE price = 4000 AND name = 'melon';
次の SQL 文を実行すると、price が 4000 かつ、name が melon のデータを取得できます。