1

我需要编写一个查询,它总是会返回一些东西,即使没有什么满足条件,像这样

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

所以只会返回超过 10 的数字,如果没有返回,则返回任何数字有什么想法吗?

4

1 回答 1

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

为此,您需要窗口函数。

于 2013-01-24T03:13:36.227 回答