我有一個問題,一個SQL語句: 使用此MySQL的:問題與MAX()和GROUP BY - 錯誤的價值觀
select a.id as ID, a.dur as DUR, DATE(FROM_UNIXTIME(timestampCol)) as date,
a_au.re as RE, a_au.stat as STAT from b_c
inner join c on b_c.c_id = c.id
inner join a on c.id = a.c_id
inner join a_au on a.id = a_au.id
inner join revi on a_au.rev = revi.rev
where b_c.b_id = 5
我得到這樣的結果:
ID DUR date RE STAT
-------------------------------
31, 10, '2010-07-14', 2200, 0
31, 10, '2010-07-14', 2205, 0
31, 10, '2010-07-14', 2206, 2
31, 10, '2010-07-14', 2207, 0
31, 10, '2010-07-14', 2210, 2
31, 10, '2010-07-15', 2211, 0
31, 10, '2010-07-14', 2213, 1
32, 10, '2010-07-14', 2203, 0
32, 10, '2010-07-14', 2204, 0
32, 10, '2010-07-14', 2208, 2
32, 10, '2010-07-14', 2209, 0
32, 10, '2010-07-15', 2212, 2
現在我想爲一個ID和日期組合獲取一個結果行。此外,我想獲得具有最高RE號碼的結果行。
所以,我寫我的發言:
select a.id as ID, a.dur as DUR, DATE(FROM_UNIXTIME(timestampCol)) as date,
max(a_au.re) as RE, a_au.stat as STAT from b_c
inner join c on b_c.c_id = c.id
inner join a on c.id = a.c_id
inner join a_au on a.id = a_au.id
inner join revi on a_au.rev = revi.rev
where b_c.b_id = 5
group by ID, date
現在我得到這樣的結果:
ID DUR date RE STAT
-------------------------------
31, 10, '2010-07-14', 2213, 0
31, 10, '2010-07-15', 2211, 0
32, 10, '2010-07-14', 2209, 0
32, 10, '2010-07-15', 2212, 2
似乎一切會好起來的,我每天/ ID組合中的一個結果行與行最高的RE值。但是:列STAT沒有正確的值! 行
31, 10, '2010-07-14', 2213, 0
的狀態必須爲1:
31, 10, '2010-07-14', 2213, 1
所以必須有我的說法是錯誤的。看起來MySQL使用它找到的第一個STAT列值。但我想有相應的一個。
我該怎麼辦? 我在這裏看到有關此類的其他主題: Selecting all corresponding fields using MAX and GROUP BY 但我無法將其傳遞到我的SQL語句。
非常感謝&最好的問候。
添加了「最大每個組的標籤」。點擊該標籤可查看其他幾十個類似問題的帖子。 – 2010-07-14 16:17:12