SQL: Как выбрать наибольшее ПК из нескольких возвращенных записей - PullRequest
1 голос
/ 26 января 2010

У меня есть таблица Journal_Entry с первичным ключом Journal_Entry_ID и (среди других столбцов) столбец Entry_Date.

Я пытаюсь выполнить запрос, который выбирает самую последнюю запись Entry_Date - через SELECT MAX(Entry_Date) - но проблема в том, что пользователь, возможно, зарегистрировал более одной записи на данную дату. Таким образом, если пользователь сегодня зарегистрировал запись в журнале дважды, этот оператор SELECT может возвратить более одной строки, поскольку одна и та же максимальная запись Entry_Date была зарегистрирована несколько раз.

Итак, что я хотел бы сделать, если оператор SELECT MAX возвращает более одной записи, выберите запись с наивысшим значением Journal_Entry_ID из возвращенных.

Прямо сейчас мой запрос выглядит так:

SELECT Journal_Entry_ID, Entry_Date
FROM Journal_Entry
WHERE Entry_Date = (SELECT MAX(Entry_Date) FROM Journal_Entry);

Я использую SQL SERVER. Любая помощь будет принята с благодарностью.

Спасибо.

РЕДАКТИРОВАТЬ: я использую SQL SERVER. Не мой SQL, как я первоначально сообщал.

Ответы [ 3 ]

4 голосов
/ 26 января 2010

Если предположить, что Entry_Date является датой / временем, разве это не сработает?

select top 1 Journal_Entry_ID
from JournalEntry
order by Journal_Entry_ID desc, Entry_Date desc

Если Entry_Date - это только поле даты (без времени), является ли Journal_Entry_ID числовым полем с автоинкрементом? Если это так, то, возможно, это:

select top 1 Journal_Entry_ID
from  JournalEntry
where Entry_Date = (select max(Entry_Date) from JournalEntry)
order by Journal_Entry_ID desc
1 голос
/ 26 января 2010
SELECT TOP 1
       Journal_Entry_ID, Entry_Date
FROM Journal_Entry
ORDER BY Entry_Date DESC, Journal_Entry_ID DESC

Обратите внимание, что здесь предложение WHERE не является необходимым, поскольку мы уже упорядочиваем по Entry_Date.

0 голосов
/ 26 января 2010
SELECT TOP 1 Journal_Entry_ID, Entry_Date
FROM Journal_Entry
WHERE Entry_Date = (SELECT MAX(Entry_Date) FROM Journal_Entry)
ORDER BY Journal_Entry_ID DESC;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...