MySQL - 选择从给定日期开始的所有事件PLUS在给定日期之前的最近事件

时间:2012-09-14 22:13:42

标签: mysql

例如,如果我有

Event
------
id
start_date
end_date
...

我可以使用:

SELECT * FROM event WHERE start_date > NOW()

但是我想在现在之前使用start_date包含最近的一个事件..所以我将其修改为:

(SELECT * FROM event WHERE start_date < NOW() ORDER BY start_date DESC LIMIT 1)
UNION ALL  
(SELECT * FROM event WHERE start_date > NOW())

这给了我想要的结果,但我想知道是否有更直接的方法来实现这一点,也许没有使用额外的UNION和SELECT,因为我的实际查询更复杂的连接,我宁愿不重复。有没有更好的方法来编写该查询?

1 个答案:

答案 0 :(得分:0)

你可以这样做:

SELECT * FROM event WHERE start_date >= (
  SELECT MAX(start_date) FROM event WHERE start_date < NOW()
)