我正在製作一個類似facebook的消息系統。消息系統mysql,消息列表
我有兩個表:
messages =>
m_id (message id)
t_id (thread id)
author_id (id of user that wrote the message)
text (Text for the message)
date (date)
time (time)
thread_recipients =>
t_id (thread_id)
user_id (id of the user that will belong to this thread)
read (Flag to tell if there are any unread messages)
所以我基本上要爲獲得線程(對話),一個用戶的部分名單。在該列表中,我想選擇在線程中發佈的最後一條消息的文本,日期和時間。
我已經做了sqlfiddle: http://sqlfiddle.com/#!2/a3d9b/2
所以基本上我想這個查詢只返回最後一排,因爲它具有最高的消息ID。
如果可以在沒有子查詢的情況下完成,那就太棒了。如果沒有,那麼我只好住在一起(:
編輯: 我想出如何使用子查詢做到這一點,但在這裏我最大的擔憂是表現我非常喜歡做的事。 。另一種方式,如果可能的
SELECT r.t_id, m.author_id, left(m.text, 50)
FROM
messages m,
thread_recipients r
WHERE
r.user_id = 16 and
r.t_id = m.t_id and
m.m_id = (SELECT MAX(mm.m_id) FROM messages mm WHERE mm.t_id = m.t_id)
嗯,我知道max,但我的問題是如何實現它,最好沒有子查詢。 – jah