使用内部SELECT选择CASE

时间:2013-12-12 15:22:32

标签: sql case

我需要用SELECT CASE创建一个SQL,我需要做的是,如果内部SELECT返回多个元素,我需要执行整个SELECT,否则返回空字符串。有效的代码是这样的(释义):

SELECT CASE 
    WHEN (SELECT COUNT (DISTINCT obj.param1 WHERE...) 
          from table1) > 1 THEN '' 
    ELSE SELECT * from table2 
   where obj2.param1 = (SELECT DISTINCT obj.param1 from table1 WHERE...)

我需要的是某种优化,为了不执行内部SELECT查询两次,一次执行计数,一次检索父SELECT查询所需的结果。这可能吗?

1 个答案:

答案 0 :(得分:1)

难道你只是做了这样的事情,如果没有返回行,那么只是检测到而不是返回一个空字符串,或者这是否用作更大的select语句的一部分?

SELECT * 
FROM table2 
WHERE obj2.param1 IN (
    SELECT obj1.param1 
    FROM table1 
    WHERE... 
    GROUP BY obj1.param1
    HAVING COUNT(*) = 1
)