我有三个表:用户、角色、授权
用户
|username|lastName|firstName|....
|dan |foo |dan
|russ |bar |russ
角色
|role |roleLevel
|ROLE_ADMIN | 0
|ROLE_COMPANY_ADMIN | 20
|ROLE_MARKETING_ADMIN | 50
|ROLE_SERVICE_ADMIN | 80
|ROLE_USER | 100
当局
|username|authority
|dan |ROLE_SERVICE_ADMIN |
|dan |ROLE_USER |
|russ |ROLE_MARKETING_ADMIN|
|russ |ROLE_ADMIN |
|russ |ROLE_COMPANY_ADMIN |
我需要让所有角色级别高于我传入的 INT 的 DISTINCT 用户以及他们的最低角色级别
我现在拥有的是:
SELECT DISTINCT u.username, u.firstName, u.lastName, r.roleLevel FROM AUTHORITIES a, ROLES r, USERS u
WHERE r.role = a.authority
AND a.username = u.username
AND r.roleLevel >= #{roleLevel}
ORDER BY u.lastName, u.firstName
但这为具有多个角色的用户提供了多行。如何获得角色级别低于我传入的用户?