SQL:如果找不到行,请再做一次搜索?

时间:2013-01-24 03:11:29

标签: sql

我需要编写一个总是会返回一些东西的查询,即使没有任何条件满足条件,也就是这样的

SELECT * WHERE date > NOW() FROM table ORDER by date
   IF none is returned THEN
      SELECT FIRST FROM table ORDER by date

因此,只返回超过10的数字,如果没有返回,则返回任何数字 有什么想法怎么做?

1 个答案:

答案 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

你需要窗口功能。