开发者

SQL: Get a random entry iff condition is false

Using Firebird:

I want to select a random entry in the table if the first SQL query returns 0 rows. Is there开发者_开发问答 anyway to combine these two queries?

SELECT * FROM table WHERE cond=1;

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

Im using ExecuteNativeQuery on the java-side which takes basic SQL statements. Sadly, If-Else statements don't work. And if i could make a single query to the database instead of two, that would make my code appear faster.


try this: Not sure but think it will work...

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  


if(exists(select 1 from table where cond=1))
SELECT * FROM table WHERE cond=1;
else
SELECT FIRST 1 * FROM table ORDER BY rand();

something like this, though I forgot whether the then keyword is needed in if statements in FirebirdSQL databases.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜