SQL - 在case中选择语句

时间:2016-06-25 04:18:25

标签: sql database oracle select case

如何使用SQL case语句实现此目的?

select count(*) x  from t_table where file_id = 310012; 

if x<>0 : select distinct status from t_table where file_id = 310012 
else : return x

3 个答案:

答案 0 :(得分:1)

您可以使用union all

执行所需操作
select distinct status
from t_table
where file_id = 310012 
union all
select 0
from dual
where not exists (select 1 from t_table where tile_id = 320023);

但是,使用0返回单行似乎是一个坏主意,因为它可能会与值status混淆。

注意:如果'0'是字符串,则应使用status

答案 1 :(得分:1)

See the code below:

SELECT CASE COUNT(*) 
                    WHEN COUNT(*) > 0 THEN 
                    (SELECT status FROM t_table  WHERE file_id = 310012) 
                    ELSE null END AS x 
FROM t_table  WHERE file_id = 310012;

答案 2 :(得分:0)

您无需计算记录。只做一个查询:

if x <> 0 then ..... else return x

当查询返回某些行时,x必须是&lt;&gt; 0
如果查询返回空结果集,那么x必须等于0,并且得到virtual的第二部分
作为奖励,您可以获得更高的处理速度,因为您只对表执行一次查询,而不是两次。