我有一个消息表:
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
);
关于mysql - 如何获取包含双重 ID 引用的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15017968/