没有ORDER BY的SQL中的最新日期和时间

时间:2012-09-14 00:17:49

标签: sql

我正在尝试找到一种方法来显示事件表中的最后一个事件(上次日期和时间),同时显示该事件的所有列而不使用ORDER BY。

例如:

SELECT * from Events
where dateheld in (select max(dateheld) from events)
AND starttime in (select max(starttime) from events)

当我把MAX启动时,它什么也没显示。当我把MIN启动时它起作用但显示该日期的最早时间而不是最新时间。

2 个答案:

答案 0 :(得分:1)

我猜你可以打印出你的记录,把它们扔下楼梯,那些最远的记录会有“最轻”的日期。没有订单,您无法排序。这就像想要不湿的水。除非你的数据自然按照你想要的顺序出现,否则你必须排序。

当然,如果您只想要具有绝对最近日期的记录,并且不需要多于该记录,那么

SELECT yourdatetimefield, ...
FROM yourtable
HAVING yourdatetimefield = MAX(yourdatetimefield)

答案 1 :(得分:0)

如果您只是寻找最新项目:

当你有单独的日期和时间字段时,

编辑会变得有点复杂,但这应该有效。对于日期和时间应存储在一个字段中的情况,这是一个荒谬的问题。

SELECT * 
FROM (
  SELECT *
  FROM Events
  WHERE dateTime = (SELECT MAX(dateheld) FROM Events)
) temp
WHERE starttime = (SELECT MAX(starttime) FROM (
  SELECT *
  FROM Events
  WHERE dateTime = (SELECT MAX(dateheld) FROM Events)
) temp 2 )