MySQL,データを取得する際のORとANDの優先順位

スポンサーリンク

鍛錬 985

MySQL,データを取得する際のORとANDの優先順位

OR と AND を同時に使用すると、AND の処理が優先されます。

例えば以下の場合、OR を AND よりも前に記述していますが、実際に処理される順序は AND 、OR の順になります。

SELECT * FROM テーブル名 WHERE 条件1 OR 条件2 AND 条件3;

OR と AND を同時に使用する際に OR の処理を優先したい場合は、以下に示す通り()で囲みます。

SELECT * FROM テーブル名 WHERE (条件1 OR 条件2) AND 条件3;
スポンサーリンク

実行結果

今回は、テーブル「sample_tb」について確認しています。

テーブル「sample_tb」

id name
1 AAA
2 BBB
3 BBB
4 BBB
5 CCC

以下は、OR と AND を同時に使用する際に、OR の処理を()で囲まない場合と囲む場合について確認しています。

mysql> 
mysql> select * from sample_tb;
+------+------+
| id   | name |
+------+------+
|    1 | AAA  |
|    2 | BBB  |
|    3 | BBB  |
|    4 | BBB  |
|    5 | CCC  |
+------+------+
5 rows in set (0.00 sec)

mysql> 
mysql> 
mysql> select * from sample_tb where name='AAA' or name='CCC' and id=5;
+------+------+
| id   | name |
+------+------+
|    1 | AAA  |
|    5 | CCC  |
+------+------+
2 rows in set (0.00 sec)

mysql> 
mysql> 
mysql> select * from sample_tb where (name='AAA' or name='CCC') and id=5;
+------+------+
| id   | name |
+------+------+
|    5 | CCC  |
+------+------+
1 row in set (0.00 sec)

上記に示した通り、OR の処理を()で囲まない場合は AND の処理が優先され、OR の処理を()で囲んだ場合は OR の処理が優先されることが分かりました。

タイトルとURLをコピーしました