按最新响应分组消息

时间:2012-01-17 00:36:18

标签: mysql

我有一个名为Comments的表,用于在两个用户之间存储消息,表结构如下所示:

id | from_id | to_id | comment | date

我想查询数据只显示双方之间的最新消息。 我以前见过它。

我正在使用MYSQL。

2 个答案:

答案 0 :(得分:3)

对于用户1:

SELECT comment
FROM COMMENTS
WHERE (from_id = 2 AND to_id = 1) 
ORDER BY date DESC
LIMIT 0,1;

对于用户2:

SELECT comment
FROM COMMENTS
WHERE (from_id = 1 AND to_id = 2) 
ORDER BY date DESC
LIMIT 0,1;

“where”子句需要确保消息从双方中的一方发送到另一方,反之亦然,并且只向该用户显示消息。

如果需要向两个用户显示来自两者中的任何一个的最新消息:

SELECT comment
FROM COMMENTS
WHERE (from_id = 1 OR from_id = 2)
ORDER BY date DESC
LIMIT 0,1;

答案 1 :(得分:2)

我们假设两个用户的ID号为12

SELECT comment
FROM COMMENTS
WHERE (from_id = 1 OR from_id = 2)
AND (to_id = 1 OR to_id = 2)
ORDER BY date DESC
LIMIT 1;

如果你真的想要迂腐,你可以将它添加到where子句:

AND NOT (from_id = to_id)

以防止他们向自己发送消息的情况。这假设用户甚至可以在您的系统中向他们自己发送消息。