Pol*_* F. 1 sql t-sql insert insert-update sql-server-2014
我需要将几乎重复的行插入表中,同时更改一些值。
例如,插入具有新 id 的重复行(我不需要自动 id)和不同的名称,但所有其他值相同。问题是我需要做出选择 *
我知道有一种方法可以通过这种方式插入选择和更改值:
insert into Table1(id,name,surname) select newid(),'David',surname from Table1 where id=1
Run Code Online (Sandbox Code Playgroud)
但我不想登记所有字段,而是想使用 select *,所以如果添加了字段,我将不必更改我的存储过程。
我想要类似的东西:
insert into Table1 (
update (SELECT *
FROM Table1
WHERE id= 1 ) t
set t.id= newid(),name='David')
Run Code Online (Sandbox Code Playgroud)
有办法做到吗?
您可以使用临时哈希表来完成此操作。
SELECT *
INTO #temp
FROM Table1
WHERE id= 1;
UPDATE #temp
SET ID = newid(),
Name='David'
INSERT INTO Table1 SELECT * FROM #temp;
Run Code Online (Sandbox Code Playgroud)
请注意,当客户端与数据库服务器断开连接时,#temp 表会自动删除。
另外,如前所述,我更喜欢单独使用列名而不是 *。
示例:SQL 小提琴