使用Firebird:
如果第一个SQL查询返回0行,我想在表中选择一个随机条目。无论如何要结合这两个查询吗?
SELECT * FROM table WHERE cond=1;
SELECT FIRST 1 * FROM table ORDER BY rand();
我在java端使用ExecuteNativeQuery,它接受基本的SQL语句。可悲的是,If-Else的陈述不起作用。如果我可以对数据库进行单个查询而不是两个,这将使我的代码看起来更快。
答案 0 :(得分:0)
if(exists(select 1 from table where cond=1))
SELECT * FROM table WHERE cond=1;
else
SELECT FIRST 1 * FROM table ORDER BY rand();
类似的东西,虽然我忘记了FirebirdSQL数据库中的then
语句中是否需要if
关键字。
答案 1 :(得分:0)
试试这个:不确定,但认为它会起作用......
Select FIRST 1 t1.*
FROM table t1
left Join Table t2
On t2.pk = t1.pk
And t2.cond=1
ORDER BY Case When t2.Cond = 1
Then 0 Else rand() End