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

これが1つの方法です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 に答える