Sql server 2008 将行从一个表复制到另一个表,并建立多对多关系
示例表(我不与用户打交道,这只是一个示例) 如何使用管理员指定的一个角色从“导入者”复制到“用户” 附言。Sql server 2008 将行从一个表复制到另一个表,并建立多对多关系,sql-server-2008,tsql,Sql Server 2008,Tsql,示例表(我不与用户打交道,这只是一个示例) 如何使用管理员指定的一个角色从“导入者”复制到“用户” 附言。 我看到了这一点,但这在这种情况下没有帮助。假设ID是用户中的一个标识,并且管理员角色存在于角色中,并且没有现有用户,比如 insert into users( name ) select name from ImportUsers insert into UsersToRoles ( UserID, RoleID ) select users.id , role.id from u
我看到了这一点,但这在这种情况下没有帮助。假设ID是用户中的一个标识,并且管理员角色存在于角色中,并且没有现有用户,比如
insert into users( name )
select name from ImportUsers
insert into UsersToRoles ( UserID, RoleID )
select users.id , role.id
from users, roles
where role.name = 'admin'
您的表和数据
create table ImportUsers (Name varchar(15))
create table Users (Id int identity(1,1), name varchar(15))
create table Roles (Id int identity(1,1), title varchar(15))
create table UsersToRoles(UserId int, RoleId int)
insert roles values('Admin')
insert ImportUsers values('Thomas')
插入数据的脚本
create table #t(id int)
--merge to ensure names will remain unique(I am assuming that is a requirement)
;MERGE INTO Users t1
using ImportUsers t2 on t1.name = t2.name
when not matched then INSERT (Name)
VALUES( t2.Name )
OUTPUT Inserted.id
INTO #t;
insert UsersToRoles (UserId, RoleId )
select t.id, r.id from #t t
join roles r
on r.Title = 'Admin'
drop table #t
--consider: delete from ImportUsers
你能用SSIS吗?这是最好的处理方法。你能发布一些样本数据吗?如果导入器中只有
Name
,您希望如何/哪些信息插入到其他表中?@Radu Gheorghiu就这么简单-只有Name@ThiagoCustodio-我可以用代码来称呼它吗?@yytg是的,
create table #t(id int)
--merge to ensure names will remain unique(I am assuming that is a requirement)
;MERGE INTO Users t1
using ImportUsers t2 on t1.name = t2.name
when not matched then INSERT (Name)
VALUES( t2.Name )
OUTPUT Inserted.id
INTO #t;
insert UsersToRoles (UserId, RoleId )
select t.id, r.id from #t t
join roles r
on r.Title = 'Admin'
drop table #t
--consider: delete from ImportUsers