我需要用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查询所需的结果。这可能吗?
答案 0 :(得分:1)
难道你只是做了这样的事情,如果没有返回行,那么只是检测到而不是返回一个空字符串,或者这是否用作更大的select语句的一部分?
SELECT *
FROM table2
WHERE obj2.param1 IN (
SELECT obj1.param1
FROM table1
WHERE...
GROUP BY obj1.param1
HAVING COUNT(*) = 1
)