0

假设您有MySQL Database Schemaafrom_id和 a to_id,它们都代表数字用户ID的。上下文是类似于聊天的基于文本的对话。

您如何选择query 与他/她进行过对话的所有其他用户database之间交换的所有最后消息的列表?user 1

4

2 回答 2

0
SELECT * FROM TABLENAME WHERE from_id = USERID1 OR to_id = USERID1 

您可能希望将所需的列代替“*”以获得更好的性能。

如果您有一个日期时间字段,那么您也可以按该字段进行搜索。

于 2012-06-22T20:49:27.290 回答
0

如果您需要 1 个用户:

SELECT * FROM TABLENAME 
WHERE from_id = USERID1 OR to_id = USERID1 
ORDER BY `timestamp` DESC
LIMIT 1

这里timestamp- 你的时间戳字段。

对于所有用户:

select text, id, ts 
from (select text, from_id as id,ts from chat union select text, to_id as id,ts from chat) T 
group by id 
having ts=max(ts)

这里 ts - 时间戳

于 2012-06-22T20:48:14.290 回答