多个AND / OR逻辑搞砸了

时间:2016-08-18 07:33:51

标签: mysql

我需要在userID=4和状态=正在使用或待处理或已删除时获取我的数据。 但我得到的额外数据不确定原因。

我从

获取额外数据
userid=3

MySQL查询是:

SELECT * FROM `registered_bicycle` 
WHERE (`userID`='4') 
  AND (`status`='In Use') 
  OR (`status`='Pending') 
  OR (`status`='Deleted')

enter image description here

4 个答案:

答案 0 :(得分:1)

您必须在(...)语句周围使用OR

SELECT * FROM `registered_bicycle` 
WHERE (`userID`='4') 
  AND (`status`='In Use' 
  OR `status`='Pending' 
  OR `status`='Deleted')

或使用IN功能

答案 1 :(得分:1)

将部分放在大括号之后的AND之间,否则会返回userID=4status=xy

的数据
SELECT * FROM `registered_bicycle` WHERE (`userID`='4') AND (
      (`status`='In Use') 
     OR (`status`='Pending') 
     OR (`status`='Deleted')
)

答案 2 :(得分:0)

请改为尝试:

SELECT
    *
FROM
    `registered_bicycle`
WHERE `userID` = '4'
AND `status` IN('In Use','Pending','Deleted')

由于缺少正确的括号,你的and/or逻辑混乱了。您也可以使用IN而不是多个OR子句。

Btw IN只是OR

的缩写形式

答案 3 :(得分:0)

试试这个:

SELECT * FROM `registered_bicycle` 
WHERE (`userID`='4') 
  AND `status`IN('In Use','Pending','Deleted')