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

时间:2011-12-21 13:08:41

标签: sql sql-server

如果:

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

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

5 个答案:

答案 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)
         ) ;