[英]How to exclude equal values from a query result
I have this query: 我有这个查询:
SELECT queue.first_dealer, queue.second_dealer, queue.status
FROM queue
WHERE queue.status = 3
AND queue.first_dealer = $user_id
OR queue.second_dealer = $user_id
AND queue.status = 3
ORDER BY id DESC
LIMIT 5
But sometimes the first_dealer or the second_dealer can be the same, I want to skip to the next records if they are the same. 但是有时first_dealer或second_dealer可以相同,如果它们相同,我想跳到下一条记录。
You need to add some parentheses in your WHERE clause, because of [operator precedence][1]
between AND and OR. 由于AND和OR之间的
[operator precedence][1]
,因此需要在WHERE子句中添加一些括号。 Group conditions that belong together, together, like this: 一起属于一起的组条件,如下所示:
SELECT queue.first_dealer, queue.second_dealer, queue.status
FROM queue
WHERE queue.status = 3
AND ( queue.first_dealer = $user_id
OR queue.second_dealer = $user_id)
AND queue.status = 3 AND
queue.first_dealer <> queue.second_dealer
ORDER BY id DESC
LIMIT 5
Even in cases where you don't strictly need the parentheses, it may result in more readable code if you do. 即使在您严格不需要括号的情况下,如果这样做也可能会导致代码更具可读性。
SELECT queue.first_dealer, queue.second_dealer, queue.status
FROM queue
WHERE queue.status = 3
AND (queue.first_dealer = $user_id OR queue.second_dealer = $user_id)
AND queue.first_dealer != queue.second_dealer
AND queue.status = 3
ORDER BY id DESC
LIMIT 5
You should use parentheses in your WHERE
statement: 您应该在
WHERE
语句中使用括号:
WHERE queue.status = 3 and
(queue.first_dealer = $user_id OR queue.second_dealer = $user_id)
If you don't want them to be the same, just add another clause: 如果您不希望它们相同,只需添加另一个子句:
WHERE queue.status = 3 and
(queue.first_dealer = $user_id OR queue.second_dealer = $user_id) and
queue.first_dealer <> queue.second_dealer
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.