Mic*_*haw 2 sql t-sql sql-server
我想将行从一个表移动到另一个表,delete from [foo] output deleted.[col] into [bar] (col)看起来是一个不错的选择.
但是列不完全相同.所以我想在目标表中插入一些硬编码值(理想情况下是编程确定的值).
我设置了几张表来演示.
create table delete_output_test (
thing1 int not null,
thing2 varchar(50),
thing3 varchar(50)
)
create table delete_output_test2 (
thing1 int not null,
thing2 varchar(50),
thing3 varchar(50),
thing4 int
)
insert into delete_output_test values (0, 'hello', 'world'),
(1, 'it''s', 'me'),
(2, 'i', 'was'),
(3, 'wondering', 'if')
Run Code Online (Sandbox Code Playgroud)
如果我不太需要,现在从一张桌子移动到另一张桌子工作正常......
delete from delete_output_test2
output deleted.thing1,
deleted.thing2,
deleted.thing3
into delete_output_test
(thing1,
thing2,
thing3)
Run Code Online (Sandbox Code Playgroud)
但是,如果我想填充最后一列怎么办?
delete from delete_output_test2
output deleted.thing1,
deleted.thing2,
deleted.thing3
into delete_output_test
(thing1,
thing2,
thing3,
4)
Run Code Online (Sandbox Code Playgroud)
'4'附近的语法不正确.期待'.',ID,PSEUDOCOL或QUOTED_ID.
我对SQL很新,所以我甚至不确定那些东西是什么.
那么为什么我不能对要插入的值进行硬编码?如果我想变得聪明,甚至可以4用一些select陈述代替?
好了,delete_output_test没有一列命名4或thing4但是delete_output_test2确实.所以你可以这样做:
delete from delete_output_test
output deleted.thing1,
deleted.thing2,
deleted.thing3,
4
into delete_output_test2
(thing1,
thing2,
thing3,
thing4);
select * from delete_output_test2;
Run Code Online (Sandbox Code Playgroud)
rextester演示:http://rextester.com/CVZOB61339
收益:
+--------+-----------+--------+--------+
| thing1 | thing2 | thing3 | thing4 |
+--------+-----------+--------+--------+
| 0 | hello | world | 4 |
| 1 | it's | me | 4 |
| 2 | i | was | 4 |
| 3 | wondering | if | 4 |
+--------+-----------+--------+--------+
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
98 次 |
| 最近记录: |