我有三个数据库表-角色、权限和角色权限,如下所示。
Permissions
|---------------------|------------------|
| name | id |
|---------------------|------------------|
| THREAD_VIEW | 1 |
|---------------------|------------------|
| TEAM_VIEW | 2 |
|---------------------|------------------|
| TEAM_EDIT | 3 |
|---------------------|------------------|
Roles
|---------------------|------------------|
| name | id |
|---------------------|------------------|
| ADMIN | 11 |
|---------------------|------------------|
| MEMBER | 12 |
|---------------------|------------------|
| EMPLOYEE | 13 |
|---------------------|------------------|
| FRONT DESK | 14 |
|---------------------|------------------|
| GATE KEEPER | 15 |
|---------------------|------------------|
rolePermissions
|---------------------|------------------|
| roleId | permissionId |
|---------------------|------------------|
| 11 | 1 |
|---------------------|------------------|
| 11 | 2 |
|---------------------|------------------|
| 12 | 1 |
|---------------------|------------------|
| 12 | 3 |
|---------------------|------------------|
| 13 | 3 |
|---------------------|------------------|
| 14 | 1 |
|---------------------|------------------|
| 15 | 2 |
|---------------------|------------------|
我想写一个查询来添加权限 TEAM_VIEW
(id-2)对于 THREAD_VIEW
(id-1)权限已处于活动状态。我们可以从中看到 rolePermissions
表 roleId
11已经有了 permissionId
我得补充一句 permissionId
2个 roleId
12和 roleId
14我是mysql的初学者。我写了一些东西,但不管用。
insert into rolePermissions(roleId, permissionId)
select rp.roleId, p.id from rolePermissions rp
join Permissions p on p.id = rp.permissionId
where p.name = 'THREAD_VIEW' and p.name <> 'TEAM_VIEW';
1条答案
按热度按时间1cosmwyk1#
我想你想要:
这将为已经具有
'THREAD_VIEW'
许可。如果您想确保新元组在目标表中还不存在,那么,假设您在
roleId, permissionId
,只需添加on duplicate key
查询末尾的子句: