「OR演算子」を「比較演算子」としてとらえた方がうまく説明がつく感があります。
Q&A
Closed
phpMyAdminです。
MySQLは実戦経験がないので、参考書で覚えた程度です。
テーブル my_items の全データは id 1 2 3 4の4件です。
id item_name price keyword sales
1 いちご 180 赤い,甘い,ケーキ 5
2 りんご 90 丸い,赤い,パイ 20
3 バナナ 120 パック,甘い,黄色 16
4 ブルーベリー 200 袋入り,青い,眼精疲労 8
1)SELECT * FROM my_items WHERE id=1 OR id=3 AND price<150 AND keyword LIKE '%甘い%';
id item_name price keyword sales
1 いちご 180 赤い,甘い,ケーキ 5
3 バナナ 120 パック,甘い,黄色 16
2)SELECT * FROM my_items WHERE (id=1 OR id=3) AND price<150 AND keyword LIKE '%甘い%';
id item_name price keyword sales
3 バナナ 120 パック,甘い,黄色 16
以上のですが
質問があります。
3) id=1 OR id=3・・・・為 OR 真・・・結果 → 真 真
4)(id=1 OR id=3)・・・ 為 OR 真・・・結果 → 真
以上ですが、1)の()がない場合は 180の 為 も評価され出力される
のは何故ですか?
「OR演算子」を「比較演算子」としてとらえた方がうまく説明がつく感があります。
3) id=1 OR id=3
4)(id=1 OR id=3)
違いですが
3)は()がないのでORで id=3 と比較されないため
ORの影響は受けない。そのため id=1 が独り歩き
できるので id=1 と書かれ時点で、選択の対象とな
り出力される。
4)の場合()でくくった時点で、id=1とid=3 が比較され
真である id=3 が返される。 id=1 は
AND price<150 AND keyword LIKE '%赤い%'
のすべての条件を満たしていないため、出力されない。