我下面的查询没有显示所需的结果。我不明白我在哪里用错括号了
查询:
SELECT `orders`.*, `users`.`fullname`, `users`.`phone`
FROM `orders`
JOIN `users` ON `orders`.`userId` = `users`.`id`
WHERE `orders`.`payment_verified_status` = '1'
AND (`orders`.`restId` = 132 OR `orders`.`restId` = 133 OR `orders`.`restId` = 134)
AND (`rest_brId` != 156 OR `rest_brId` != 188 OR `rest_brId` != 157 OR `rest_brId` != 691 OR `rest_brId` != 158)
结果是:
但是这些行不应该出现,因为我在查询中提到 rest_brId != 156
请帮忙。谢谢!
2条答案
按热度按时间k10s72fa1#
你身体的这部分
WHERE
子句不正确:如果
rest_brId = 156
,尽管该条款的第一部分不正确,但第二部分到第五部分(例如。rest_brId != 188
)是真的,因此该行进入您的输出。您需要将该行更改为:或者使用
NOT IN
正如@gordonlinoff建议的那样。y1aodyip2#
使用
in
:注意
?
. 这是talbe的别名rest_brID
.你的逻辑问题在于
OR
对于不等于,而不是括号。这部分逻辑的计算结果总是正确的,因为您实际上想要AND
而不是OR
对于这部分逻辑。