我有一个Journal_Entry表,主键为Journal_Entry_ID,(以及其他列)是一个Entry_Date列。
我正在尝试通过SELECT MAX(Entry_Date)
进行选择最近的Entry_Date的查询 - 但问题是用户可能在给定日期记录了多个条目。因此,如果用户今天两次记录日记条目,则此SELECT语句可能会返回多行,因为已多次记录相同的MAX 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。
答案 0 :(得分:4)
假设Entry_Date是一个日期/时间,这样的工作会不会这样?
select top 1 Journal_Entry_ID
from JournalEntry
order by Journal_Entry_ID desc, Entry_Date desc
如果Entry_Date只是一个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 :(得分:1)
SELECT TOP 1
Journal_Entry_ID, Entry_Date
FROM Journal_Entry
ORDER BY Entry_Date DESC, Journal_Entry_ID DESC
请注意,此处不需要WHERE子句,因为我们已经通过Entry_Date进行排序。
答案 2 :(得分:0)
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;