我有一个有特定角色的用户表。一个用户每次为他们拥有的角色进入表格。我需要计算具有特定角色的所有用户,但我需要排除也有另一个角色的任何重复记录。下面是什么在我的表如果重复记录具有一定的值,则排除记录
Name Role
Steve ROLE_8
Steve ROLE_9
Steve ROLE_1
填充,这是查询我要选择谁拥有某些角色的用户。我需要做的是检查用户是否有ROLE_1,并检查是否有另一个用户实例具有我不想包含该用户并将其从返回集中排除的角色。
SELECT COUNT(DISTINCT c.user_id)
FROM users c
WHERE email_addr != ''
AND email_addr IS NOT NULL
AND EXISTS
(SELECT r.role_id
FROM ROLE r, user_role ur
WHERE c.user_id = ur.user_id
AND ur.role_id = r.role_id
AND (r.name = 'ROLE_1'
OR r.name = 'ROLE_2'
OR r.name = 'ROLE_3'
OR r.name = 'ROLE_4'
OR r.name = 'ROLE_5'
OR r.name = 'ROLE_6'))
你可以显示你想要的输出的例子吗? – GabrielVa
如果我只搜索角色1到6的用户,并且用户在数据库中有两条记录,一条使用ROLE_1,另一条使用ROLE_8,那么我希望从返回集中完全排除该用户。所以在我给的例子中,我想返回0条记录,但因为每条记录都有一个独特的角色,我得到1(因为我选择不同)。 –