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

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

SQLのorは条件を論理和で接続する演算子

where句で複数の条件を論理和(AまたはB)で接続する場合はor演算子を使います。

以下のSQLは、employees(社員)テーブルから、姓名の名がGeorgiまたは、姓名の名がMaryのデータを20件取得するSQLです。

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

+--------+------------+-------------+
| 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      |
|  13881 | Mary       | Monarch     |
|  13924 | Mary       | DasSarma    |
|  15220 | Georgi     | Panienski   |
|  15660 | Georgi     | Hartvigsen  |
|  15689 | Georgi     | Capobianchi |
|  15843 | Georgi     | Varley      |
|  16021 | Mary       | Ananiadou   |
|  16672 | Georgi     | Peris       |
|  16939 | Georgi     | Ranon       |
|  18453 | Georgi     | Maksimenko  |
+--------+------------+-------------+

orを使った条件文はinを使って置き換えが可能

or条件が増えるとSQLが長くなり可読性が落ちます。inを使ってスッキリ見やすく置き換えが可能です。

【関連記事】
SQLでandとorを使った条件をinで置き換えるサンプルコード 

mysql> select emp_no, first_name, last_name from employees
where first_name='Georgi'
or first_name='Mary'
or first_name='Kyoichi'
or first_name='Saniya' limit 20;
+--------+------------+--------------+
| emp_no | first_name | last_name    |
+--------+------------+--------------+
|  10001 | Georgi     | Facello      |
|  10005 | Kyoichi    | Maliniak     |
|  10008 | Saniya     | Kalloufi     |
|  10011 | Mary       | Sluis        |
|  10532 | Mary       | Wossner      |
|  10909 | Georgi     | Atchley      |
|  10922 | Kyoichi    | Wossner      |
|  11029 | Georgi     | Itzfeldt     |
|  11208 | Saniya     | Valtorta     |
|  11430 | Georgi     | Klassen      |
|  11547 | Kyoichi    | Flexer       |
|  11821 | Mary       | Piazza       |
|  12157 | Georgi     | Barinka      |
|  12334 | Mary       | Ertl         |
|  12582 | Saniya     | Herath       |
|  12645 | Kyoichi    | Decaestecker |
|  12796 | Saniya     | Stanfel      |
|  12963 | Kyoichi    | Azevdeo      |
|  13186 | Kyoichi    | Barbanera    |
|  13409 | Kyoichi    | Vitiello     |
+--------+------------+--------------+
20 rows in set (0.09 sec)

mysql> select emp_no, first_name, last_name from employees
where first_name in ('Georgi','Mary', 'Kyoichi','Saniya') limit 20;

また、andとorを複数使ったwhere句は、以下のように置き換えが可能です。

mysql> select * from employees
where first_name = 'Georgi' and last_name 'Peris' 
or first_name = 'Mary' and last_name 'Sluis';

+--------+------------+------------+-----------+--------+------------+
| emp_no | birth_date | first_name | last_name | gender | hire_date  |
+--------+------------+------------+-----------+--------+------------+
|  10011 | 1953-11-07 | Mary       | Sluis     | F      | 1990-01-22 |
|  16672 | 1955-04-25 | Georgi     | Peris     | M      | 1986-03-13 |
+--------+------------+------------+-----------+--------+------------+

mysql> select * from employees
where (first_name, last_name) = ('Georgi','Peris') 
or (first_name, last_name) = ('Mary','Sluis');

mysql> select * from employees 
where (first_name, last_name) in (('Georgi','Peris'), ('Mary','Sluis'));

(first_name, last_name)のような記述方法は行コンストラクタと呼ばれています。

参考)MySQL :: MySQL 5.6 リファレンスマニュアル :: 13.2.10.5 行サブクエリー

まとめ

ポテパンダの一言メモ
  • or演算子は、where句の条件を論理和で接続できる
  • 複数のor条件はinでまとめることができる
  • orとandが混合している場合は、行コンストラクタとinを組み合わせてまとめることができる

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

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

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

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

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

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

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

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

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

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

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