SQL:如果condition为false,则获取随机条目

时间:2010-09-08 14:03:34

标签: sql mysql firebird

使用Firebird:

如果第一个SQL查询返回0行,我想在表中选择一个随机条目。无论如何要结合这两个查询吗?

SELECT * FROM table WHERE cond=1;

SELECT FIRST 1 * FROM table ORDER BY rand();

我在java端使用ExecuteNativeQuery,它接受基本的SQL语句。可悲的是,If-Else的陈述不起作用。如果我可以对数据库进行单个查询而不是两个,这将使我的代码看起来更快。

2 个答案:

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