Jeśli to:Jak zwrócić drugi najnowszy rekord w SQL?
SELECT *
FROM Table
WHERE Date=(SELECT MAX(Date)
FROM Table
)
powraca najnowszy rekord z tabeli, jak dostać sekund najnowszy rekord?
Jeśli to:Jak zwrócić drugi najnowszy rekord w SQL?
SELECT *
FROM Table
WHERE Date=(SELECT MAX(Date)
FROM Table
)
powraca najnowszy rekord z tabeli, jak dostać sekund najnowszy rekord?
SELECT *
FROM Table
WHERE Date = (SELECT MAX(Date)
FROM Table
WHERE Date < (SELECT MAX(Date)
FROM Table
)
) ;
czyli
SELECT TOP (1) *
FROM Table
WHERE Date < (SELECT MAX(Date)
FROM Table
)
ORDER BY Date DESC ;
czyli
SELECT *
FROM
(SELECT t.*
, ROW_NUMBER() OVER(ORDER BY Date DESC) AS RowNumber
FROM Table t
) AS tmp
WHERE RowNumber = 2 ;
Jeśli kolumna Date
posiada unikalne wartości, wszystkie trzy pytania dadzą ten sam wynik. Jeśli kolumna może mieć zduplikowane daty, mogą dać inne wyniki (gdy są więzy na 1. lub 2. miejscu). Pierwsze zapytanie może nawet dać wiele wierszy w wyniku, jeśli na drugim miejscu znajdują się remisy.
"select TOP (1) *
from Table
WHERE Date<(SELECT MAX(Date) FROM Table)
ORDER BY Date DESC"
powinien załatwić sprawę.
Proszę sprawdzić ten kod.
SELECT * FROM category WHERE Created_Time <(SELECT MAX(Created_Time) FROM category) ORDER BY Created_Time DESC LIMIT 1
Prasad.
'LIMIT' nie działa w ** SERWER SQL ** jest to składnia MySQL –
Oh Sorry. Moja wina. Nie widziałem, który serwer SQL jest. Dzięki, że to zauważyłeś. –
wybierz przedostatni datą w sql:
SELECT MAX(YourDateColumn) FROM YourTable where ColumnId=2 and YourDateColumn <
(SELECT MAX(YourDateColumn) FROM YourTable where ColumnId=2)
nadzieja pomaga kogoś.
Spróbuj
SELECT *
FROM Table
WHERE Date = (SELECT MAX(Date) FROM Table
WHERE Date < (SELECT MAX(Date) FROM Table)
) ;
Wszystkie zwracają dwa rekordy, jeśli daty są takie same, jakiekolwiek rozwiązanie tego problemu? –
Druga i trzecia kwerenda zawsze zwrócą 1 rekord lub brak. –
To zależy od tego, jak chcesz radzić sobie z więzami. Co chcesz zwrócić, gdy wszystkie wiersze mają identyczne daty? –