说我有
users.id
roles.id
usersroles.users_id, usersroles.roles_id
如何使用三重连接获取用户 1 的以下标题(我认为选择中的 IF 子句?):
users.id, roles.id, (tinyint)has_the_role
1,1,0
1,2,1
1,3,1
1,4,0
说我有
users.id
roles.id
usersroles.users_id, usersroles.roles_id
如何使用三重连接获取用户 1 的以下标题(我认为选择中的 IF 子句?):
users.id, roles.id, (tinyint)has_the_role
1,1,0
1,2,1
1,3,1
1,4,0
为此,您将需要两个联接:
SELECT users.id, roles.id,
CASE WHEN usersroles.roles_id IS NULL THEN 0 ELSE 1 END AS has_the_role
FROM users
INNER JOIN roles
LEFT JOIN usersroles ON users.id = usersroles.users_id AND roles.id = usersroles.roles_id
首先,您将 users 表与角色表连接起来(没有条件,因此所有可能性都被连接),然后您检查是否存在特定组合的 usersroles 条目。