如果:從表如何返回SQL中的第二個最新記錄?
SELECT *
FROM Table
WHERE Date=(SELECT MAX(Date)
FROM Table
)
回報最新的記錄,如何得到第二最新記錄?
如果:從表如何返回SQL中的第二個最新記錄?
SELECT *
FROM Table
WHERE Date=(SELECT MAX(Date)
FROM Table
)
回報最新的記錄,如何得到第二最新記錄?
SELECT *
FROM Table
WHERE Date = (SELECT MAX(Date)
FROM Table
WHERE Date < (SELECT MAX(Date)
FROM Table
)
) ;
或:
SELECT TOP (1) *
FROM Table
WHERE Date < (SELECT MAX(Date)
FROM Table
)
ORDER BY Date DESC ;
或:
SELECT *
FROM
(SELECT t.*
, ROW_NUMBER() OVER(ORDER BY Date DESC) AS RowNumber
FROM Table t
) AS tmp
WHERE RowNumber = 2 ;
如果Date
列具有獨特的價值,所有三個查詢可以得到同樣的結果。如果該欄可以有重複的日期,那麼它們可能會給出不同的結果(當第一或第二位有聯繫時)。如果在第二位有聯繫,第一個查詢甚至會給出結果中的多行。
"select TOP (1) *
from Table
WHERE Date<(SELECT MAX(Date) FROM Table)
ORDER BY Date DESC"
應該這樣做。
請檢查這個代碼。
SELECT * FROM category WHERE Created_Time <(SELECT MAX(Created_Time) FROM category) ORDER BY Created_Time DESC LIMIT 1
Prasad。在SQL
'LIMIT'在** SQL SERVER中不起作用**它是MySQL語法 – 2011-12-21 13:16:48
噢對不起。我的錯。我沒有看到哪個SQL服務器。感謝您注意到這一點。 – 2011-12-21 14:48:27
選擇倒數第二個日期:
SELECT MAX(YourDateColumn) FROM YourTable where ColumnId=2 and YourDateColumn <
(SELECT MAX(YourDateColumn) FROM YourTable where ColumnId=2)
希望可以幫助別人。
按日期倒序排列試試這個
SELECT *
FROM Table
WHERE Date = (SELECT MAX(Date) FROM Table
WHERE Date < (SELECT MAX(Date) FROM Table)
) ;
如果日期相同,他們都會返回兩條記錄,對此有何解決方案? – 2011-12-21 13:33:55
第二個和第三個查詢將始終返回1個記錄或無。 – 2011-12-21 13:37:38
所以,這取決於你如何處理關係。當所有行具有相同的日期時,你想要返回什麼? – 2011-12-21 13:41:48