简体   繁体   English

如何从查询结果中排除相等的值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM