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