如果这:
SELECT *
FROM Table
WHERE Date=( SELECT MAX(Date)
FROM Table
)
Run Code Online (Sandbox Code Playgroud)
从表中返回最新记录,如何获得第二个最新记录?
ype*_*eᵀᴹ 22
SELECT *
FROM Table
WHERE Date = ( SELECT MAX(Date)
FROM Table
WHERE Date < ( SELECT MAX(Date)
FROM Table
)
) ;
Run Code Online (Sandbox Code Playgroud)
要么:
SELECT TOP (1) *
FROM Table
WHERE Date < ( SELECT MAX(Date)
FROM Table
)
ORDER BY Date DESC ;
Run Code Online (Sandbox Code Playgroud)
要么:
SELECT *
FROM
( SELECT t.*
, ROW_NUMBER() OVER(ORDER BY Date DESC) AS RowNumber
FROM Table t
) AS tmp
WHERE RowNumber = 2 ;
Run Code Online (Sandbox Code Playgroud)
如果Date列具有唯一值,则所有三个查询都将给出相同的结果.如果列可以有重复日期,那么它们可能会给出不同的结果(当第1或第2位有关联时).如果在第二位有联系,第一个查询甚至会在结果中给出多行.
"select TOP (1) *
from Table
WHERE Date<(SELECT MAX(Date) FROM Table)
ORDER BY Date DESC"
Run Code Online (Sandbox Code Playgroud)
应该做的伎俩.