有人可以帮我解决这个问题吗?
我是使用CASE的新手,我该怎么做才能做到这一点。如果rights = manager,那么我想在案例中运行代码。
select email, user_id, first_name, last_name, rights
from users u
where company_id = 2141
and receives_emails = 'y'
case u.rights when 'manager' then
and user_id in (select user_id from manager_depts where company_id = u.company_id and dept_id = 2)
end
谢谢!
答案 0 :(得分:5)
这里你实际上不需要CASE,
SELECT email, u.user_id, first_name, last_name, rights
FROM users u
LEFT JOIN manager_depts d ON d.company_id = u.company_id and d.dept_id = 2
WHERE company_id = 2141 AND receives_emails = 'y'
AND (u.rights != 'manager' OR d.user_id IS NOT NULL)
答案 1 :(得分:-1)
以这种方式写下
select
email, user_id, first_name, last_name, rights
from
users u
where
company_id = 2141
and
receives_emails = 'y'
and
(
(
u.rights = 'manager'
and
user_id in (
select
user_id
from
manager_depts
where
company_id = u.company_id
and
dept_id = 2
)
)
or
(
u.rights <> 'manager'
)
)