0

我有一张桌子

message_id, to_id, from_id, 消息

我做了一个线程消息系统。我有 5 个人与 1 位成员交谈。

作为我看到的成员

会员 1 打招呼,会员 2 打招呼(我想让这个说最新的回复是您好)

成员 1 打招呼,成员 3 打招呼,成员 1 打招呼(我要这个打招呼)

成员 2 打招呼(我要这个打招呼)

现在,我只提供了一个 ID,即 member1 的 sessionid。我将如何展示我(member1)留下最新回复的场景 2。

我可以轻松做到

 SELECT * FROM messages WHERE to_id=$session_id ORDER BY message_id DESC LIMIT 1 

但这只会显示传入的消息。我需要显示传入和传出消息的最后一条。

你会建议什么查询?:\ 如果没有有效的方法,也许会改变表格?我第一次设置消息系统,欢迎提出建议。

4

2 回答 2

1
SELECT 
*
FROM messages 
WHERE to_id = $session_id
OR from_id = $session_id
ORDER BY message_id DESC
LIMIT 1
于 2012-07-07T10:36:59.353 回答
1

您需要使用UNION运算符来检索最新的传入消息,并将最新的传出消息附加到该结果上:

SELECT * FROM messages WHERE to_id=$session_id ORDER BY message_id DESC LIMIT 1

UNION ALL

SELECT * FROM messages WHERE from_id=$session_id ORDER BY message_id DESC LIMIT 1
于 2012-07-07T11:18:38.590 回答