admin

如何在SQL中返回第二个最新记录?

sql

如果这:

SELECT *
FROM Table
WHERE Date=( SELECT MAX(Date)
             FROM Table
           )

从表中返回最新记录,如何获取 第二个最新 记录?


阅读 189

收藏
2021-05-10

共1个答案

admin

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列具有唯一值,则所有三个查询将给出相同的结果。如果该列可以有重复的日期,则它们可能给出不同的结果(当并列在第一或第二位时)。如果在第二位有联系,则第一个查询甚至会在结果中提供多行。

2021-05-10