条件を満たしていない場合でも、常に何かを返すクエリを作成する必要があります。
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を超える数値のみが返されます。何も返されない場合は、任意の数値を返します。それを行う方法について何かアイデアはありますか?
これが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
これにはウィンドウ関数が必要です。