我有一个消息表:
messages:
id(int)
send_id(int)
receive_id(int)
而且我希望仅当存在a-> b和b-> a时才可以从中选择行,例如:
id send_id recieve_id
0, 15, 16
1, 16, 15
这样,基本上每个人都传递了一条消息。我如何才能只选择这两行之一(发送或接收),以及全部针对特定ID的行。
我只想返回具有这种双重性的结果。
我的代码当前使用嵌套的
SELECT
,并且根本无法正常工作。 最佳答案
您可以利用MySQL的LEAST
和GREATEST
内置函数来获得结果。
SELECT *
FROM messages
WHERE (LEAST(send_id, recieve_id), GREATEST(send_id, recieve_id), id)
IN
(
SELECT LEAST(send_id, recieve_id) as x,
GREATEST(send_id, recieve_id) as y,
MAX(id) msg_ID
FROM messages
GROUP BY x, y
);
SQLFiddle Demo
MySQL Comparison Operator (LEAST/GREATEST)
关于mysql - 如何获取包含双重ID引用的行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15017968/