SQL OR演算子

WHERE句には1つ以上のOR演算子を含めることができます。

OR演算子は、複数の条件に基づいてレコードをフィルタリングするために使用されます。例えば、ドイツ出身のすべての顧客とスペイン出身のすべての顧客を返したい場合です。

ドイツまたはスペイン出身のすべての顧客を選択します:

SELECT *
FROM Customers
WHERE Country = 'Germany' OR Country = 'Spain';

構文

SELECT column1, column2, ...
FROM table_name
WHERE condition1 OR condition2 OR condition3 ...;

ORとAND

OR演算子は、いずれかの条件がTRUEである場合にレコードを表示します。

AND演算子は、すべての条件がTRUEである場合にレコードを表示します。

デモデータベース

以下は例で使用されるCustomersテーブルからの一部です:

CustomerID CustomerName ContactName Address City PostalCode Country
1 Alfreds Futterkiste Maria Anders Obere Str. 57 Berlin 12209 Germany
2 Ana Trujillo Emparedados y helados Ana Trujillo Avda. de la Constitución 2222 México D.F. 05021 Mexico
3 Antonio Moreno Taquería Antonio Moreno Mataderos 2312 México D.F. 05023 Mexico
4 Around the Horn Thomas Hardy 120 Hanover Sq. London WA1 1DP UK
5 Berglunds snabbköp Christina Berglund Berguvsvägen 8 Luleå S-958 22 Sweden

少なくとも1つの条件がTRUEである必要がある場合

次のSQL文は、Cityが「Berlin」、CustomerNameが「G」で始まる、またはCountryが「Norway」であるCustomersのすべてのフィールドを選択します:

SELECT * FROM Customers
WHERE City = 'Berlin' OR CustomerName LIKE 'G%' OR Country = 'Norway';

ANDとORの組み合わせ

AND演算子とOR演算子を組み合わせることができます。

次のSQL文は、スペイン出身で名前が「G」または「R」で始まるすべての顧客を選択します。正しい結果を得るためには、括弧を使用してください。

スペイン出身で名前が「G」または「R」で始まるすべての顧客を選択します:

SELECT * FROM Customers
WHERE Country = 'Spain' AND (CustomerName LIKE 'G%' OR CustomerName LIKE 'R%');

括弧を使用しない場合、次のようになります:

次のいずれかに該当するすべての顧客を選択します:

  • スペイン出身で名前が「G」で始まる
  • 名前が「R」で始まる
SELECT * FROM Customers
WHERE Country = 'Spain' AND CustomerName LIKE 'G%' OR CustomerName LIKE 'R%';