要点は、句のemployee_id
番号のリストを返したいということです。IN
employee_id
like(2,3,4,5)
と a company_id
likeのリストが与えられ5
ます。これらの一部は に属しcompany=5
、一部は属しません。これらのいずれかが に属している場合、句company=5
ではそれらの ID 番号のみを使用したいと考えています。IN
指定されたemployee_id
番号のどれも に属していない場合、 のすべての番号company=5
を返したいと思います。employee_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
)