我有Users
的表格和Role
的另一个表格以及他们之间的表格Access
如何在SQL查询中为所有用户添加角色?
表User
:
ID Name ...
1
5
9
10
11
表Role
:
Id ....
10
11
12
表Access
:
UserID RoleID
1 10
2 10
3 10
4 10
我想用Loop做,意味着从User的第1行到结束
更新:
我正在使用:
DECLARE @roleId int
SET @roleId = 79
INSERT INTO Access (Users.code, @roleId)
SELECT code, @roleId
FROM Users
我收到错误:
@ roleId'附近的语法不正确。
答案 0 :(得分:2)
DECLARE @roleId ...;
INSERT INTO Access (UserID, RoleID)
SELECT ID, @roleId
FROM Users
然后你也可以添加一个你想要的地方。这听起来不像你想要的,所以我不会给出一个例子,但你可以想象这个查询如何扩展以做更复杂的事情。
如果您拥有相应的唯一键,则可能需要执行以下操作:
DECLARE @roleId ...;
INSERT INTO Access (UserID, RoleID)
SELECT ID, @roleId
FROM Users
WHERE ID NOT IN (SELECT UserID FROM Access WHERE RoleID = @roleId)
您还可以通过切换它来执行以下操作,将用户添加到所有角色:
DECLARE @userId ...;
INSERT INTO Access (UserID, RoleID)
SELECT @userId, ID
FROM Roles