簡體   English   中英

將table2中的所有行插入到table1中

[英]Inserting into table1 for all rows in table2

我在Group表中有五個組,分別是Group1,Group2,Group3,Group4,Group5,每當將新角色添加到Role表中時,我都必須進入GROUP_ROLES表,如下所示

declare @gid int, @rid int
select @gid1 = id from Group where name = 'Group1'
select @gid2 = id from Group where name = 'Group2'
select @gid3 = id from Group where name = 'Group3'
select @gid4 = id from Group where name = 'Group4'
select @gid5 = id from Group where name = 'Group5'
select @rid = id from ROLE where name = 'newRole'

if @gid is not null and not exists(select * from GROUP_ROLES where group_id = @gid and roles_id = @rid)
begin
insert into GROUP_ROLES(group_id, roles_id) values (@gid1, @rid)
insert into GROUP_ROLES(group_id, roles_id) values (@gid2, @rid)
insert into GROUP_ROLES(group_id, roles_id) values (@gid3, @rid)
insert into GROUP_ROLES(group_id, roles_id) values (@gid4, @rid)
insert into GROUP_ROLES(group_id, roles_id) values (@gid5, @rid)
end

現在我有點多余的腳本。 想知道是否有一種方法可以簡化腳本嗎?

嘗試這個:

使用INSERT ... SELECT而不是以上所有查詢來將表中的行插入。

INSERT INTO GROUP_ROLES (group_id, roles_id) 
SELECT g.id, r.id
FROM Group g, ROLE r
WHERE NOT EXISTS (SELECT 1 FROM GROUP_ROLES gr WHERE gr.group_id = g.id AND gr.roles_id = r.id) AND 
      r.name = 'newRole' AND g.name IN ('Group1', 'Group2', 'Group3', 'Group4', 'Group5');

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM