Webサイト制作コースのお申し込みはこちら Webサイト制作コースのお申し込みはこちら

SQLのor演算子についてまとめています。

SQLのorの構文

whereの条件文をorで接続します。以下の場合は、first_name(姓名の名)がGeorgiまたは、Maryのデータを抽出する例です。

mysql> select emp_no, first_name, last_name from employees
where first_name='Georgi' or first_name='Mary';

+--------+------------+-------------+
| emp_no | first_name | last_name   |
+--------+------------+-------------+
|  10001 | Georgi     | Facello     |
|  10011 | Mary       | Sluis       |
|  10532 | Mary       | Wossner     |
|  10909 | Georgi     | Atchley     |
|  11029 | Georgi     | Itzfeldt    |
|  11430 | Georgi     | Klassen     |
|  11821 | Mary       | Piazza      |
|  12157 | Georgi     | Barinka     |
|  12334 | Mary       | Ertl        |
|  13562 | Mary       | Cooley      |
 :
 :

【関連記事】
SQLのor演算子は条件を論理和で接続 inや行コンストラクタで置換が可能

andとorが条件式に混在していた場合、or条件はand条件よりも優先順位が低いです。or条件を優先したい場合は、カッコでor条件を括ります。

mysql> select emp_no, first_name, last_name from employees where first_name='Georgi' and ( last_name = 'Facello' or last_name='Klassen' );
+--------+------------+-----------+
| emp_no | first_name | last_name |
+--------+------------+-----------+
|  10001 | Georgi     | Facello   |
|  11430 | Georgi     | Klassen   |
|  55649 | Georgi     | Facello   |
+--------+------------+-----------+
3 rows in set (0.09 sec)

Oracleのorの構文

Oracleのorの構文は以下の通り。記述方法には特にOracleの独自拡張等はありません。

SELECT employee_id FROM employees
   WHERE commission_pct = .4 OR salary > 20000
   ORDER BY employee_id;

関連)Oracle公式ドキュメント:論理条件

OR条件を指定するとOracleのオプティマイザは、内部的にUNION ALLに変換します。

SELECT *
FROM   sales
WHERE  promo_id=33 
OR     prod_id=136;

上記のSQLを実行すると、オプティマイザは以下のUNION ALLを使った2つのSQLを実行します。

SELECT *
FROM   sales
WHERE  prod_id=136
UNION ALL
SELECT *
FROM   sales
WHERE  promo_id=33
AND    LNNVL(prod_id=136);

関連)Oracle公式リファレンスマニュアル:問合せ変換

SQL Serverのorの構文

SQL Serverのor演算子には、特に独自拡張等はありません。

-- Uses AdventureWorks  
  
SELECT FirstName, LastName, BaseRate, HireDate   
FROM DimEmployee  
WHERE BaseRate < 10 OR HireDate >= '2001-01-01';  

関連)OR (Transact-SQL) – SQL Server | Microsoft Docs

SQL ServerのビットごとのOR論理和演算は、|(パイプ)を使用します。

SELECT a_int_value | b_int_value  
FROM bitwise;  
GO  

-----------   
235           
  
(1 row(s) affected)  

関連)| (ビット演算子 OR) (Transact-SQL) | Microsoft Docs – SQL Server | Microsoft Docs

MySQLのorの構文

MySQLでは、orの代わりに||(パイプ2つ)を使ってor条件の記述が可能です。

mysql> select emp_no, first_name, last_name from employees 
where first_name='Georgi' || first_name='Mary' limit 10;
+--------+------------+-----------+
| emp_no | first_name | last_name |
+--------+------------+-----------+
|  10001 | Georgi     | Facello   |
|  10011 | Mary       | Sluis     |
|  10532 | Mary       | Wossner   |
|  10909 | Georgi     | Atchley   |
|  11029 | Georgi     | Itzfeldt  |
|  11430 | Georgi     | Klassen   |
|  11821 | Mary       | Piazza    |
|  12157 | Georgi     | Barinka   |
|  12334 | Mary       | Ertl      |
|  13562 | Mary       | Cooley    |
+--------+------------+-----------+
10 rows in set, 1 warning (0.05 sec)

関連)MySQL :: MySQL 5.6 リファレンスマニュアル :: 12.3.3 論理演算子

PostgreSQLのorの構文

PostgreSQLでは、特にor演算子の拡張はありません。

SELECT * from tbl
WHERE x > 0 OR y/x > 1.5;

関連)PostgreSQL公式リファレンスマニュアル:論理演算子

PostgreSQLで、CREATE OR REPLACE FUNCTON…と記述する場合のORは、論理演算子ではなく、CREATE FUNCTIONの文法の一部です。

ストアドファンクションが存在しなければ新規作成し、存在していれば置き換えを行います。

CREATE OR REPLACE FUNCTION increment(i integer) RETURNS integer AS $$
        BEGIN
                RETURN i + 1;
        END;
$$ LANGUAGE plpgsql;

関連)PostgreSQL公式リファレンスマニュアル:CREATE FUNCTION

まとめ

ポテパンダの一言メモ
  • SQLのor演算子は、複数の条件式を「または」で接続できる
  • 条件式でor条件をand条件より優先させるには括弧を使う
  • MySQLなど一部のDBMSでは、orの代わりに||を代替できるものもある

エンジニアになりたい人に選ばれるプログラミングスクール「ポテパンキャンプ 」

ポテパンキャンプは卒業生の多くがWebエンジニアとして活躍している実践型プログラミングスクールです。 1000名以上が受講しており、その多くが上場企業、ベンチャー企業のWebエンジニアとして活躍しています。

基礎的な学習だけで満足せず、実際にプログラミングを覚えて実践で使えるレベルまで学習したいという方に人気です。 プログラミングを学習し実践で使うには様々な要素が必要です。

それがマルっと詰まっているポテパンキャンプでプログラミングを学習してみませんか?

卒業生の多くがWebエンジニアとして活躍

卒業生の多くがWeb企業で活躍しております。
実践的なカリキュラムをこなしているからこそ現場でも戦力となっております。
活躍する卒業生のインタビューもございますので是非御覧ください。

経験豊富なエンジニア陣が直接指導

実践的なカリキュラムと経験豊富なエンジニアが直接指導にあたります。
有名企業のエンジニアも多数在籍し品質高いWebアプリケーションを作れるようサポートします。

満足度高くコスパの高いプログラミングスクール「ポテパンキャンプ」

運営する株式会社ポテパンは10,000人以上のエンジニアのキャリアサポートを行ってきております。
そのノウハウを活かして実践的なカリキュラムを随時アップデートしております。

代表の宮崎もプログラミングを覚えサイトを作りポテパンを創業しました。
本気でプログラミングを身につけたいという方にコスパ良く受講していただきたいと思っておりますので、気になる方はぜひスクール詳細をのぞいてくださいませ。