我正在使用mysql编写消息系统。
当我列出与之交谈的用户时,一切正常,直到我想添加对话的最后日期或对话开始。
当我添加a.date
时,如果日期不同,则会得到重复的结果。
这是我的sqlfiddle
答案 0 :(得分:1)
由于您只拉了user_id,所以在两种情况下(发送/接收),它都为您提供了独特的记录。但是到目前为止,它不再是唯一的。您需要执行以下操作:
SELECT temp.id_user, MAX(temp.date) as date
FROM
(
SELECT users.id_user,
a.date
FROM users
LEFT JOIN message AS a
ON users.id_user = a.id_user_recipient
LEFT JOIN message AS b
ON a.id_user_recipient = b.id_user_sender
WHERE a.id_user_sender = 1
UNION DISTINCT
SELECT users.id_user,
a.date
FROM users
LEFT JOIN message AS a
ON users.id_user = a.id_user_sender
LEFT JOIN message AS b
ON a.id_user_sender = b.id_user_recipient
WHERE a.id_user_recipient = 1
) as temp
GROUP BY temp.id_user;
抓取max(date)将确保仅返回与group by
一样的一条记录