我有以下查询给出了当前日期的记录:
select * from tickets where updated >=CURDATE()
对我而言,似乎我会有一个OR
条件来说最后3条记录,但据我所知,只能用LIMIT
子句应用于成功结果。也许我在想这个,所以在正确的方向上推动会有所帮助。
答案 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