当前日期的MySQL结果以及如果记录不存在则返回最后3条记录

时间:2014-02-19 23:40:14

标签: mysql

我有以下查询给出了当前日期的记录:

select * from tickets where updated >=CURDATE()

对我而言,似乎我会有一个OR条件来说最后3条记录,但据我所知,只能用LIMIT子句应用于成功结果。也许我在想这个,所以在正确的方向上推动会有所帮助。

3 个答案:

答案 0 :(得分:1)

如果我理解正确,

select * from tickets where updated >=CURDATE() 
UNION DISTINCT
(select * from tickets where ORDER BY updated DESC LIMIT 3)

应该更新所有内容> = CURDATE()。但是,如果没有至少3个值,它将获得最新值,直到有3个。

UNION语句只是将两个查询“粘合”在一起,DISTINCT语句简单组合了相同的行。

括号必须将LIMIT 3仅绑定到底部选择。

答案 1 :(得分:1)

如果你真的不想做两个查询,那么这将为你做。

SELECT * FROM tickets WHERE updated = CURDATE()
UNION 
(SELECT DISTINCT * FROM tickets WHERE NOT EXISTS (
   SELECT * FROM tickets WHERE updated = CURDATE()) 
ORDER BY 
  updated DESC 
LIMIT 3)

其他答案的问题是如果更新= CURDATE()为真,他们仍将返回更新的以及今天未更新(并且他们只返回3) - 我不相信你是什么想。

我的查询确保您选择一个或另一个的NOT EXISTS。

答案 2 :(得分:0)

您想获得最新更新的3条记录吗?使用ORDER BY和LIMIT BY

select * from tickets where updated >= CURDATE() order by updated desc limit 3