0
我有一个单列表, 我想修改原始表中的行并将它们作为新行插入。SQL修改并插入原始表中的新行
originalTable - >| xyz |
--------
| abc1 |
需要一个SQL专家来此查询重构为一个单一的SQL查询,如果possble,(这里是想我已经做了,
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 |
您确定您使用的是MySQL吗? MySQL不使用'#'作为临时表,它使用'CREATE TEMPORARY TABLE'。 – Barmar
它使用'CONCAT'函数进行连接,而不是'||'。你真的在使用什么RDBMS? – Barmar