列更新標誌想象一下如下表:於最大日期每組
Id type created flag
-----------------------------------------------------
1 1 2015-12-11 12:00:00 0
2 1 2015-12-11 12:10:00 0
3 2 2015-12-11 12:00:00 0
4 2 2015-12-11 12:10:00 0
5 3 2015-12-11 12:00:00 0
6 3 2015-12-11 12:10:00 0
--------------------------------------------------------
我想寫這將標誌設置爲1(TRUE)的每一行的查詢與最近的創建日期爲每種類型分組。當然,結果應該是:
Id type created flag
-----------------------------------------------------
1 1 2015-12-11 12:00:00 0
2 1 2015-12-11 12:10:00 1
3 2 2015-12-11 12:00:00 0
4 2 2015-12-11 12:10:00 1
5 3 2015-12-11 12:00:00 0
6 3 2015-12-11 12:10:00 1
--------------------------------------------------------
我知道
UPDATE table
SET flag = TRUE
ORDER BY created DESC
LIMIT 1;
將設置標誌最近的日期,但我堅持就如何應用此爲每個組。
我也試過:
UPDATE table t
INNER JOIN
(SELECT id, flag, MAX(created) as maxdate
FROM table
GROUP BY type) as m
SET flag = TRUE
WHERE m.id = t.id AND t.created = m.maxdate;
的可能的複製[SQL:查找每個組最高紀錄](http://stackoverflow.com/questions/2657482/sql-find-the-max-record-per-group) – Strawberry
你的編輯嘗試出了什麼問題?哦,你已經略微混淆了子查詢,我會在SET之前使用ON子句,而不是在它之後的WHERE子句。 – Strawberry