0

例如,如果我有

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

我可以用:

SELECT * FROM event WHERE start_date > NOW()

但我还想在 start_date BEFORE now 中包含最近的一个事件。所以我将其修改为:

(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,因为我的实际查询对连接更复杂,我不想重复它。有没有更好的方法来编写该查询?

4

1 回答 1

0

你可以这样做:

SELECT * FROM event WHERE start_date >= (
  SELECT MAX(start_date) FROM event WHERE start_date < NOW()
)
于 2012-09-15T00:14:42.343 回答