Vip*_*rus 5 sql sql-server not-exists sql-update sql-delete
我目前正在尝试编写一个脚本,将用户的角色更改为另一个,而不会在 SQL Server 数据库中创建重复项。
例如:
User_ID Role_ID
---------------------
A X
A Z
B Y
C X
C Y
D Y
Run Code Online (Sandbox Code Playgroud)
用户可能有多个角色。
我想更改它,以便角色 Y 中的所有用户现在都是角色 X 的成员,角色 Y 将不再存在:
User_ID Role_ID
---------------------
A X
A Z
B X
C X
D X
Run Code Online (Sandbox Code Playgroud)
通过将所有 Y 角色更新为 X,这可能会创建重复值;因此我只需要在新值不存在时更新,否则只需删除此值
试试这个(SQL 演示)
--Delete records with X if same user has Y
delete t1
from userRoles t1 join (
select * from userRoles t2 where t2.role_id = 'y') t3
on t1.user_id = t3.user_Id
where t1.role_id = 'x'
--Update all Y records to X
update userRoles set role_id = 'X'
where role_id = 'y'
select * from userRoles
--RESULTS
USER_ID ROLE_ID
A X
A Z
B X
C X
D X
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4684 次 |
| 最近记录: |