Sql server Sql查询中的循环(While,For)
我有一个用于Sql server Sql查询中的循环(While,For),sql-server,tsql,Sql Server,Tsql,我有一个用于用户的表,另一个用于角色的表,以及它们之间的一个表访问 如何向SQL查询中的所有用户添加角色 表用户: ID Name ... 1 5 9 10 11 表角色: Id .... 10 11 12 表访问权限: UserID RoleID 1 10 2 10 3 10 4 10 我想用循环来做,从用户的第1行到最后 更新: 我正在使用: DECLARE @roleId int SET @ro
用户
的表,另一个用于角色
的表,以及它们之间的一个表访问
如何向SQL查询中的所有用户添加角色
表用户
:
ID Name ...
1
5
9
10
11
表角色
:
Id ....
10
11
12
表访问权限
:
UserID RoleID
1 10
2 10
3 10
4 10
我想用循环来做,从用户的第1行到最后
更新:
我正在使用:
DECLARE @roleId int
SET @roleId = 79
INSERT INTO Access (Users.code, @roleId)
SELECT code, @roleId
FROM Users
我得到一个错误:
“@roleId”附近的语法不正确
然后,如果愿意,还可以添加一个where。听起来你不想这么做,所以我不会给出一个例子,但你可以想象这个查询如何被扩展来做更复杂的事情
如果您拥有适当的唯一密钥,则可能需要执行以下操作:
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
您还可以通过切换用户并执行以下操作将其添加到所有角色:
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
我不明白您在
…访问(Users.code,…)
中试图做什么。这是一个语法错误。我编辑了这个问题。正如我在回答中所说的,只需使用插入Access(UserID,
。不要指定用户。code
@user3780058你解决了你的问题吗?我发现这个问题仍然在未回答的队列中。如果我的回答对你有帮助,请接受我的回答,如果没有,我希望继续提供帮助。