【发布时间】:2015-07-17 07:11:26
【问题描述】:
我有多个 insert into..select 语句,如下所示。如果您看到,在所有三个语句中只有一个列值(Req_Attrname)在变化。其他一切都相同,包括where 条件。
插入语句 1)
insert into details(repo_phyid,repo_type,repo_attrname,repo_Attrvalue
,Req_phyid,Req_type,Req_Attrname,Req_attrvalue)
select demo.phyid,'Complementary Item','Product Management Responsible',demo.attr_value,
tnr.phyid,'Complementary Item','**Product Manager**',demo.attr_value
From repo_Tnr Tnr,repo_Tnr_Attribute demo
Where Tnr.Phyid=demo.Phyid
And demo.Attr_Name='Product Management Responsible'
and tnr.type='Complementary Item'
插入语句 2)
insert into details(repo_phyid,repo_type,repo_attrname,repo_Attrvalue,
Req_phyid,Req_type,Req_Attrname,Req_attrvalue)
select demo.phyid,'Complementary Item','Product Management Responsible',demo.attr_value,
tnr.phyid,'Complementary Item','**Quality Manager**',demo.attr_value
From repo_Tnr Tnr,repo_Tnr_Attribute demo
Where Tnr.Phyid=demo.Phyid
And demo.Attr_Name='Product Management Responsible'
and tnr.type='Complementary Item'
插入语句 3)
insert into details(repo_phyid,repo_type,repo_attrname,repo_Attrvalue
,Req_phyid,Req_type,Req_Attrname,Req_attrvalue)
select demo.phyid,'Complementary Item','Product Management Responsible',demo.attr_value
,tnr.phyid,'Complementary Item',**'Depty Engineer**',demo.attr_value
From repo_Tnr Tnr,repo_Tnr_Attribute demo
Where Tnr.Phyid=demo.Phyid
And demo.Attr_Name='Product Management Responsible'
and tnr.type='Complementary Item'
我在这里尝试的是,如果选择返回我 20 行,首先我必须插入 20 行 Product Manager 作为 Req_attrname 的值,然后我必须插入相同的 20 行但 Quality Manager 并再次与Deputy Engineer 。为此,我使用了 3 个插入语句。像这样我有 15 到 20 个插入语句。有没有办法可以在单个插入语句中做到这一点?它将帮助我减少代码并增加可读性。请提供替代解决方案。
【问题讨论】:
标签: sql oracle oracle11g sql-insert