SQL修改并在原始表中插入新行

时间:2015-07-10 23:10:39

标签: sql

我有一个单列表, 我想修改原始表中的行并将它们作为新行插入。

originalTable - >| xyz  |
                 --------
                 | abc1 |

需要一位sql专家将此查询重构为单个sql查询(如果可能的话)(这是我想要的,

1)这里我创建两个独立的临时表来进行所有处理

2)然后将它们连接到原始表

如果我可以在一个语句中执行以下所有查询,我想要消除这些表的创建。

create table #tmp1(
 xyz varchar(10)
)
create table #tmp2(
 xyz varchar(10)
)

insert into #tmp1 (xyz)
select xyz from originalTable

insert into #tmp2 (xyz)
select xyz from originalTable

update #tmp1(xyz)
select xyz = (SUBSTRING(xyz, 1, 8)) || 'P'

update #tmp2(xyz)
select xyz = (SUBSTRING(xyz, 1, 8)) || 'R'

insert into #originalTable (xyz)
select xyz from #tmp_1
UNION
select xyz from #tmp_2

originalTable - > | xyz  |
                  -------- 
                  | abc1 |
                  | abcP |
                  | abcR |

1 个答案:

答案 0 :(得分:3)

只需编写一个返回所有子字符串连接的查询,并将其用作INSERT语句中的源。

INSERT INTO originalTable (xyz)
SELECT (SUBSTRING(xyz, 1, 8)) || 'P'
FROM originalTable
UNION
SELECT (SUBSTRING(xyz, 1, 8)) || 'R'
FROM originalTable