我想查詢最近的一排爲每個值在一列X.如何查詢列X中每個值的最近行?
我現在的嘗試是:
SELECT max(mytimestamp), mytable.* FROM mytable GROUP BY X
,但同時在結果第一列包含了最新的時間標記,其他列不是來自最近的行。
我該如何解決這個問題?
我想查詢最近的一排爲每個值在一列X.如何查詢列X中每個值的最近行?
我現在的嘗試是:
SELECT max(mytimestamp), mytable.* FROM mytable GROUP BY X
,但同時在結果第一列包含了最新的時間標記,其他列不是來自最近的行。
我該如何解決這個問題?
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
想想看,讓我知道列應該來自哪個記錄(提示:最大或最小)。
這隻涉及一張表嗎?那麼,爲什麼不這樣:
select * from mytable order by mytimestamp desc limit 1
我不認爲你需要通過羣組:
SELECT MAX(時間戳),MYTABLE * FROM MYTABLE LIMT 1;
我需要列X中每個不同值的結果 – arturh 2011-01-19 11:22:56
正確 - 您從未在您的問題中說過!或者至少不清楚。示例輸出和示例數據將有幫助 – diagonalbatman 2011-01-19 13:13:31
因爲我需要在列X中的每個不同值的結果 – arturh 2011-01-19 11:22:34