Как вернуть вторую новейшую запись в SQL?

Если это:

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

возвращает новую запись из таблицы, как получить запись вторая новейшая?

Ответ 1

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-м месте). Первый запрос даже даст несколько строк в результате, если на втором месте есть ссылки.

Ответ 2

"select TOP (1) * 
 from Table   
 WHERE Date<(SELECT MAX(Date) FROM Table) 
 ORDER BY Date DESC"

должен сделать трюк.

Ответ 3

Пожалуйста, проверьте этот код.

SELECT * FROM category 
WHERE Created_Time <(
                     SELECT MAX(Created_Time) 
                     FROM category
                     ) 
ORDER BY Created_Time DESC 
LIMIT 1

Прасад.

Ответ 4

выберите вторую последнюю дату в sql:

 SELECT MAX(YourDateColumn) FROM YourTable where ColumnId=2 and  YourDateColumn <
(SELECT MAX(YourDateColumn) FROM YourTable where ColumnId=2)

Надежда помогает кому-то.

Ответ 5

Попробуйте это

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