为什么mySQL查询会产生意外结果?

时间:2018-12-23 20:10:21

标签: mysql sql

这是我的mySQL查询:

SELECT mCat,postSta 
FROM `info_posts` 
WHERE `mCat` = 'Mobiles' AND `sCat` = 'Mobile Phones' AND `brCat` = 'Apple' AND `postSta` = 1 OR `postSta` = 4 OR `postSta` = 5

这个问题是,它会正确选择所有条件,但是也会获取postSta = 4和5 take a look at the screenshot的东西。我想选择符合postSta为1或4或5的mCat,sCat和brCat的条件的东西。

2 个答案:

答案 0 :(得分:3)

使用IN

SELECT mCat,postSta
FROM info_posts
WHERE mCat = 'Mobiles' AND sCat = 'Mobile Phones' AND brCat = 'Apple' AND 
      postSta IN (1, 4, 5)

问题是查询中需要括号,但是IN是更好的方法。

答案 1 :(得分:2)

逻辑“和”运算符的优先级高于逻辑“或”运算符。您需要的逻辑可以通过用括号括起一系列“或”条件来实现:

SELECT `mCat`, `postSta`
FROM   `info_posts`
WHERE  `mCat` = 'Mobiles' AND
       `sCat` = 'Mobile Phones' AND
       `brCat` = 'Apple' AND
       (`postSta` = 1 OR `postSta` = 4 OR `postSta` = 5)