如果:
SELECT *
FROM Table
WHERE Date=( SELECT MAX(Date)
FROM Table
)
从表中返回最新记录,如何获得第二个最新记录?
答案 0 :(得分:22)
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
列具有唯一值,则所有三个查询都会给出相同的结果。如果列可以具有重复日期,那么它们可能会给出不同的结果(当第1或第2位有关联时)。如果在第二位有联系,第一个查询甚至会在结果中给出多行。
答案 1 :(得分:7)
"select TOP (1) *
from Table
WHERE Date<(SELECT MAX(Date) FROM Table)
ORDER BY Date DESC"
应该这样做。
答案 2 :(得分:1)
请检查此代码。
SELECT * FROM category
WHERE Created_Time <(
SELECT MAX(Created_Time)
FROM category
)
ORDER BY Created_Time DESC
LIMIT 1
普拉萨德。
答案 3 :(得分:1)
选择sql中的第二个最后日期:
SELECT MAX(YourDateColumn) FROM YourTable where ColumnId=2 and YourDateColumn <
(SELECT MAX(YourDateColumn) FROM YourTable where ColumnId=2)
希望帮助某人。
答案 4 :(得分:0)
试试这个
SELECT *
FROM Table
WHERE Date = ( SELECT MAX(Date) FROM Table
WHERE Date < ( SELECT MAX(Date) FROM Table)
) ;