Sql server SQL Server从3个表插入查询

Sql server SQL Server从3个表插入查询,sql-server,Sql Server,我有一个表Users,其中有3000条不同用户的记录 (UserID、用户名、登录邮箱、密码) 我有另一个表角色(RoleID,code,Name,Description),在这个表中我有20个角色 我有第三个表UserRoles(UserRoleID,UserID,RoleID)-此表当前为空 现在,我想编写一个查询或过程,根据..将数据插入UserRoles表中 从Users表中获取每个UserID,并从roles表中为其分配所有角色 假设UserRoleID是身份 insert into

我有一个表
Users
,其中有3000条不同用户的记录 (
UserID、用户名、登录邮箱、密码

我有另一个表
角色
RoleID,code,Name,Description
),在这个表中我有20个角色

我有第三个表
UserRoles
UserRoleID,UserID,RoleID
)-此表当前为空

现在,我想编写一个查询或过程,根据..将数据插入
UserRoles
表中

  • Users
    表中获取每个
    UserID
    ,并从
    roles
    表中为其分配所有角色

假设
UserRoleID
是身份

insert into userRoles ( UserID, RoleID) 
select u.UserID, r.RoleID 
from user u cross join roles r

您可以使用任何生成用户和角色的连接(交叉连接或隐式连接),例如:

insert userroles (userid, roleid)
select u.userid, r.roleid
from users u
cross join roles r
或使用旧的隐式联接语法(ANSI SQL 92之前的版本):

这两个查询都假设UserRoleID是自动生成的标识字段,如果不是,则必须使用循环或窗口函数(如ROW_NUMBER())为该字段生成值


@MalikUsman难道你不知道如何接受一个有用的答案吗?看看这个:
insert userroles (userid, roleid)
select u.userid, r.roleid
from users u, roles r