我試圖從select中的每個組中獲取最近一行,但有一點扭曲。MySQL從兩列中選擇組中的最後一行
獲取例如下表:
id , user_id , created_at , balance
1 , 1 , 2016-01-01 01:01:01 , 1
2 , 1 , 2016-01-01 01:01:01 , 2
你可以看到created_at
值是相同的用戶是相同的,而問題是,我不能靠id字段既不是因爲沒有保證最大的id將是最後一個。
如果created_at字段將不可複製下面的查詢將正常工作:
SELECT L.id
, L.user_id
, L.created_at
, L.balance
FROM log AS L
JOIN
(SELECT user_id
, MAX(created_at) AS max_created_at
FROM log
GROUP BY user_id) MAX_TIME ON L.user_id = MAX_TIME.user_id
AND L.created_at = MAX_TIME.max_created_at;
但由於重複created_at的,它將返回兩行。 所以我不能只依賴created_at字段,但我相信,如果created_at是重複的話,獲取最大ID會給我我想要的結果。
所以我需要添加id行以及以某種方式這個「組」機制。 任何想法如何做到這一點?
他說: >問題是我不能依靠id字段,因爲沒有保證最大的id將是最後一個。 ... – Vincent
我仍然通過created_at最大化。我只是通過使用ORDER BY忽略了一個單一的ID來縮小重複的結果。 – LCIII
這個查詢的問題是它將完全返回一行。什麼是需要返回每個用戶的最新行。 – emul