Как извлечь последние строки - PullRequest
1 голос
/ 17 февраля 2011

У меня есть такая таблица:

Table A
Date    Time    ID  Ref
110217  91703   A001    A1100056
110217  91703   A001    A1100057
110217  91703   A001    A1100058
110217  91703   A001    A1100059
110217  132440  A001    A1100057
110217  132440  A001    A1100058
110217  132440  A001    A1100060
110217  91703   B001    B1100048
110217  91703   B001    B1100049
110217  132440  B001    B1100049
110217  132440  B001    B1100050

Я хочу, чтобы были только самые последние данные, и конечный результат должен выглядеть следующим образом с использованием SQL:

Date    Time    ID  Ref
110217  132440  A001    A1100057
110217  132440  A001    A1100058
110217  132440  A001    A1100060
110217  132440  B001    B1100049
110217  132440  B001    B1100050

(3 записи с одинаковым «последним» временем)

База данных будет обновляться самостоятельно в определенное время. Проблема в том, что я не знаю точное время, поэтому я не знаю, какая запись самая последняя.

Ответы [ 3 ]

3 голосов
/ 17 февраля 2011

Это работает в SQL Server:

SELECT TOP 1 WITH TIES *
FROM TableA
ORDER BY Date DESC, Time DESC

И это решение, вероятно, не зависит от сервера:

SELECT a.*
  FROM TableA a
  JOIN (
       SELECT d.MaxDate, MAX(t.Time) AS MaxTime
         FROM TableA t
         JOIN (
              SELECT MAX(Date) AS MaxDate
                FROM TableA
              ) d
           ON t.Date = d.MaxDate
        GROUP BY d.MaxDate
       ) m
    ON a.Date = m.MaxDate AND a.Time = m.MaxTime
1 голос
/ 17 февраля 2011
SELECT * FROM table ORDER BY date DESC, time DESC LIMIT 1;

Даст вам последнюю строку в MySql.

0 голосов
/ 17 февраля 2011

Какую базу данных вы используете?Вы можете объединить эти два столбца после преобразования их в формат даты и времени, а затем упорядочить по дате.Всего этого можно добиться в запросе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...