🙂
[SQL]AND と OR を併用したクエリについて(備忘録)
1.はじめに
・AND演算子はOR演算子より優先されます。
・OR演算子をAND演算子より優先させたい場合、OR演算子の両辺を()で囲みます。
2.サンプルプログラム
〇例1
Sample_1.sql
CREATE TABLE employees (
id INT AUTO_INCREMENT NOT NULL,
name VARCHAR(10) NOT NULL,
division VARCHAR(10) NOT NULL,
joining_date DATE NOT NULL,
PRIMARY KEY (id)
)
;
INSERT INTO employees (
name,
division,
joining_date
)
VALUES
('山田', '営業', '2020-01-01'),('鈴木', '開発', '2020-01-01'),
('大谷', '開発', '2020-01-01'),('近藤', '開発', '2020-02-01'),
('佐野', '開発', '2020-02-01'),('佐藤', '企画', '2020-02-01')
;
SELECT *
FROM employees
WHERE division = '開発'
AND joining_date = '2020-01-01'
OR joining_date = '2020-02-01'
;
実行結果
id | name | division | joining_date |
---|---|---|---|
2 | 鈴木 | 開発 | 2020-01-01 |
3 | 大谷 | 開発 | 2020-01-01 |
4 | 近藤 | 開発 | 2020-02-01 |
5 | 佐野 | 開発 | 2020-02-01 |
6 | 佐藤 | 企画 | 2020-02-01 |
備考:
2020年の1月と2月に入社した開発担当者の情報のみを抽出したかったのですが、企画担当者の
情報も抽出されてしましました。
〇例2
Sample_2.sql
CREATE TABLE employees (
id INT AUTO_INCREMENT NOT NULL,
name VARCHAR(10) NOT NULL,
division VARCHAR(10) NOT NULL,
joining_date DATE NOT NULL,
PRIMARY KEY (id)
)
;
INSERT INTO employees (
name,
division,
joining_date
)
VALUES
('山田', '営業', '2020-01-01'),('鈴木', '開発', '2020-01-01'),
('大谷', '開発', '2020-01-01'),('近藤', '開発', '2020-02-01'),
('佐野', '開発', '2020-02-01'),('佐藤', '企画', '2020-02-01')
;
SELECT *
FROM employees
WHERE division = '開発'
AND (joining_date = '2020-01-01' OR joining_date = '2020-02-01')
;
実行結果
id | name | division | joining_date |
---|---|---|---|
2 | 鈴木 | 開発 | 2020-01-01 |
3 | 大谷 | 開発 | 2020-01-01 |
4 | 近藤 | 開発 | 2020-02-01 |
5 | 佐野 | 開発 | 2020-02-01 |
備考:
2020年の1月と2月に入社した開発担当者の情報のみ抽出できました。
Discussion