我需要编写一个查询,它总是会返回一些东西,即使没有什么满足条件,像这样
SELECT * WHERE date > NOW() FROM table ORDER by date
IF none is returned THEN
SELECT FIRST FROM table ORDER by date
所以只会返回超过 10 的数字,如果没有返回,则返回任何数字有什么想法吗?
我需要编写一个查询,它总是会返回一些东西,即使没有什么满足条件,像这样
SELECT * WHERE date > NOW() FROM table ORDER by date
IF none is returned THEN
SELECT FIRST FROM table ORDER by date
所以只会返回超过 10 的数字,如果没有返回,则返回任何数字有什么想法吗?
这是一种方法,使用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
为此,您需要窗口函数。