要点是,我想返回子句的employee_id数字列表。IN
我得到了一个employee_ids like(2,3,4,5)和 a company_idlike的列表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
)