在我的mysql查詢中,我嘗試使用最近一行獲取所有線程。如何在mysql中獲取組中最近的一行?
$query = "SELECT th.id, tm.message, tm.date_sent, tm.date_sent>tu.last_read_date AS new
FROM thread th
JOIN thread_user tu ON th.id=tu.thread_id AND tu.user_id={$user_id}
JOIN thread_message tm ON th.id=tm.thread_id
JOIN (
SELECT thread_id, MAX(date_sent) date_sent
FROM thread_message
GROUP BY thread_id
) q ON tm.thread_id = q.thread_id AND tm.date_sent = q.date_sent
ORDER BY tm.date_sent DESC";
這工作,但問題是,如果有兩個或兩個以上的行誰的日期是最近的,他們是在同一天,那麼它將與他們兩人的加盟。我需要第三個加入語句加入最多1行。
我也不想假定最大的ID暗示它是最近的一行,因爲我可以隨時手動更改日期。
有誰知道如何解決這個問題?
感謝
做到這一點
什麼決定了哪些消息應該在關係之間返回?您可以爲每個組建立一個行號,然後僅返回每個集合中的第一個... – sgeddes 2015-02-18 00:04:28
如果線程中有多條消息具有相同的最近日期,那麼它應該選擇具有最大id值的消息。我該如何做行號建立? – omega 2015-02-18 00:05:31
其實,如果最大的id不是最近的日期那一行呢? – omega 2015-02-18 00:11:31