我有一个用户表(id,group),如果用户不是一个组的成员,需要选择1。一个成员可以是多个组的成员,因此每个ID可能有多个记录(不是唯一的)从集合中只选择一个结果
我只能返回一个(通过/失败)值,我需要基本检查所有记录看看用户是否是“管理员”的成员。如果是“管理员”的成员,我需要声明失败。如果没有用户的组是admin,那么我需要它通过。我尝试了几种不同的方式,但我不知道我是否在正确的道路上。
SELECT 1
FROM GRP
WHERE USER = 'name'
AND GROUP NOT IN ('ADMIN')
SELECT 0
FROM GRP
WHERE USER = 'name'
AND EXISTS
(
SELECT 1 FROM GRP
WHERE USER = 'name'
AND GROUP NOT IN ('ADMIN')
)
EDIT =我如何解决我的问题
SELECT 1
FROM GRP
WHERE 'name' NOT IN
(
select USER
from GRP
group by USER
having sum(case when GROUP = 'ADMIN' then 1 else 0 end) = 1
)
使用第一个示例我可以看到我正在接近。如何检查用户是否在返回的结果中,然后返回1,如果他们是? – Echofiend
我使用了一个关于你做了什么的回合。我更新了我的问题,以显示它目前的工作情况。但谢谢你的回答,你是一个很大的帮助 – Echofiend