我需要编写一个总是会返回一些东西的查询,即使没有任何条件满足条件,也就是这样的
SELECT * WHERE date > NOW() FROM table ORDER by date
IF none is returned THEN
SELECT FIRST FROM table ORDER by date
因此,只返回超过10的数字,如果没有返回,则返回任何数字 有什么想法怎么做?
答案 0 :(得分:2)
以下是一种使用union all
的方法:
select *
from table
where number > 10
union all
(select *
where number > 0 and
not exists (select * from table where number > 10)
limit 1
)
如果您使用的是合理的SQL版本,则可以执行以下操作:
select t.*
from (select t.*, max(number) over () as maxnumber,
row_number() over (order by number desc) as seqnum
from table t
) t
where (maxnumber > 10 and number > 10) or seqnum = 1
你需要窗口功能。