要点是,我想返回子句的employee_id
数字列表。IN
我得到了一个employee_id
s like(2,3,4,5)
和 a company_id
like的列表5
。其中一些属于company=5
,一些不属于。如果其中任何一个属于company=5
,那么我只想在IN
子句中使用这些 ID 号。如果给定employee_id
数字中没有一个属于company=5
,那么我想返回 ALLemployee_id
的数字company=5
。
我在这里有逻辑,但不幸的是,您不能WHEN
从子选择返回子句内的多个值,因此该语句返回错误。
我正在尝试修改现有WHERE
子句,因此我需要在此语句中进行更改并且不使用游标等。我知道必须有一种方法可以将这些转换为一系列 AND/OR,但我无法弄清楚。
感谢您的任何帮助!
SELECT employee_id FROM employees
WHERE company_id=5
AND employee_id IN (
CASE
WHEN NOT EXISTS(SELECT employee_id FROM employees WHERE company_id=5 AND employee_id IN (2,3,4,5)) THEN
SELECT employee_id FROM employees WHERE company_id=5
ELSE
SELECT employee_id FROM employees WHERE company_id=5 AND employee_id IN (2,3,4,5)
END
)