我有一个名为Comments的表,用于在两个用户之间存储消息,表结构如下所示:
id | from_id | to_id | comment | date
我想查询数据只显示双方之间的最新消息。 我以前见过它。
我正在使用MYSQL。
答案 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号为1
和2
。
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)
以防止他们向自己发送消息的情况。这假设用户甚至可以在您的系统中向他们自己发送消息。