如何使用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
答案 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
的第二部分
作为奖励,您可以获得更高的处理速度,因为您只对表执行一次查询,而不是两次。