为什么mySQL查询会给出意外的结果?

为什么mySQL查询会给出意外的结果?,mysql,sql,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的内容。我想选择符合mCat、sCat和brCat标准的内容,其中p

这是我的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的内容。我想选择符合mCat、sCat和brCat标准的内容,其中postSta为1、4或5。

使用
中的

SELECT mCat,postSta
FROM info_posts
WHERE mCat = 'Mobiles' AND sCat = 'Mobile Phones' AND brCat = 'Apple' AND 
      postSta IN (1, 4, 5)
问题是查询中需要括号,但
中的
是一种更好的方法。

使用
中的

SELECT mCat,postSta
FROM info_posts
WHERE mCat = 'Mobiles' AND sCat = 'Mobile Phones' AND brCat = 'Apple' AND 
      postSta IN (1, 4, 5)
问题是查询中需要括号,但
中的
是一种更好的方法。

逻辑“and”操作的优先级高于逻辑“or”运算符。您要寻找的逻辑可以通过用括号括住一系列“或”条件来实现:

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)
逻辑“and”运算的优先级高于逻辑“or”运算符。您要寻找的逻辑可以通过用括号括住一系列“或”条件来实现:

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)

问题在于处理和或条件的方式。问题的可能重复之处在于处理和或条件的方式。可能重复之处在于感谢好友!!这对汉克斯兄弟很有帮助!!这对汉克斯兄弟很有帮助!!这对汉克斯兄弟很有帮助!!那有帮助