0
我試圖從某個線程獲取最後一條消息,但似乎無法獲得我的查詢權。 我似乎沒有從某個線程獲取最後一條消息。MySQL獲取最後一條消息(VarChar)
介紹
我用3個表 - 信息,message_users,message_threads
所有消息都屬於某個線程(有點像論壇和帖子是如何工作的?) 用戶可以添加多個用戶到某個線程,所以多個用戶可以在同一個線程中互相發送消息。
數據庫結構
messages table
id | t_id | u_id | message | time
--------+---------+--------+-----------+--------
1 | 1 | 1 | hello! | timestamp
2 | 1 | 2 | hi! | timestamp
3 | 2 | 1 | testing | timestamp
message_threads
id | author | subject
------+---------+-----------
1 | 1 | Subject 1
2 | 3 | Subject 2
3 | 2 | Subject 3
message_users
id | t_id | u_id | read | nonotice
------+---------+--------+--------+----------
1 | 1 | 1 | 0 | 0
2 | 1 | 2 | 0 | 0
3 | 2 | 1 | 1 | 0
查詢
這是我使用的查詢,它幾乎工程,除了它沒有得到最後的ID,無論最後的消息,任何想法? (是的,我已經看了,並尋找以前的問題就問這個問題,但沒有能夠得到固定的查詢基於莫名其妙的答案)
SELECT
m2.message,
mt.id AS thread_id,
max(m.id) AS message_id,
max(m.time) AS time,
mt.subject
FROM message_users AS mu
LEFT JOIN message_threads AS mt ON mt.id = mu.t_id
LEFT JOIN message AS m ON m.t_id = mt.id
INNER JOIN (
select message as messages_text
from message group by t_id
) AS m2 ON m2.id = m.id
WHERE mu.u_id = 1 AND mu.read = 0 AND mu.nonotice = 0
GROUP BY mt.id
ORDER BY m.id DESC
謝謝,我會嘗試一下我們的那一刻我回家,我會更新,如果有用。 剛剛更新了額外表格信息的問題。 – user2949138
太棒了,它的工作原理! 與第二個解決方案,因爲第一個結果0.05秒,另一個0.0009,也感謝你的建議,當涉及到名稱約定:) – user2949138