2011-01-19 66 views
0

我想查詢最近的一排爲每個值在一列X.如何查詢列X中每個值的最近行?

我現在的嘗試是:

SELECT max(mytimestamp), mytable.* FROM mytable GROUP BY X 

,但同時在結果第一列包含了最新的時間標記,其他列不是來自最近的行。

我該如何解決這個問題?

回答

2
SELECT M.* 
from 
(
SELECT X, max(mytimestamp) MaxT 
FROM mytable 
GROUP BY X 
) N 
inner join mytable M on M.X = N.X and M.mytimestamp = N.MaxT 

儘管MySQL允許您在GROUP BY查詢中混合使用聚合列和非聚合列,但請不要。考慮情景類似,你有什麼:

SELECT max(mytimestamp) MaxT, min(mytimestamp) MinT, mytable.* 
FROM mytable 
GROUP BY X 

想想看,讓我知道列應該來自哪個記錄(提示:最大或最小)。

0

這隻涉及一張表嗎?那麼,爲什麼不這樣:

select * from mytable order by mytimestamp desc limit 1 
+0

因爲我需要在列X中的每個不同值的結果 – arturh 2011-01-19 11:22:34

0

我不認爲你需要通過羣組:

SELECT MAX(時間戳),MYTABLE * FROM MYTABLE LIMT 1;

+0

我需要列X中每個不同值的結果 – arturh 2011-01-19 11:22:56

+0

正確 - 您從未在您的問題中說過!或者至少不清楚。示例輸出和示例數據將有幫助 – diagonalbatman 2011-01-19 13:13:31

相關問題