简体   繁体   English

SQL:如何从一个表插入数据并输出到临时表,而第一个表具有额外的值

[英]SQL: How do I insert data from one table and output to a temporary table with extra value from first table

I can use the OUTPUT keyword of the insert statement to insert new data to a table and output to a temporary table. 我可以使用insert语句的OUTPUT关键字将新数据插入表并输出到临时表。

The input table which to be inserted into another table have an Id I need to pass to the temporary table but not the table I going to insert into. 要插入到另一个表中的输入表具有一个ID,我需要将该ID传递给临时表,而不是我要插入的表。 This temporary table will later have to use to do extra insertion to the other table. 此临时表以后将不得不用于对另一个表进行额外的插入。

INSERT INTO table1 (Name, Age)
OUTPUT inserted.Id, User.Id (??) INTO TemporaryTable
SELECT Name, Age FROM User

Is there a way to do it? 有办法吗? Because the next insertion will need the new table1.Id with the User.Id , so I can migrate some data. 因为下插入所需的新table1.IdUser.Id ,这样我就可以迁移一些数据。

Instead of using the Temporary table you can use Variable so that it will not occupy more memory. 除了使用临时表,还可以使用变量,以便它不会占用更多内存。

create table table1 
(
id int NOT NULL,
,name varchar(50)
,age int,
 PRIMARY KEY (id)
)

insert into table1 (name,age) values ('name', 10)                          

declare @extracolumn as int =  scope_identity() 
select @extracolumn 

use this @extracolumn in next insert operation. 在下一个插入操作中使用此@extracolumn。

Have you included the extra column in the schema of the temporary table? 您是否在临时表的架构中包括了额外的列?

create table table1 
(
id int
,name varchar(50)
,age int
)

declare @TemporaryTable table -- or Create table #TemporaryTable
(                             
  id int,                     
  userid int -- defining the extra column                 
);                            

declare @extracolumn as int = 100; 
-- or declare @extracolumn as int = (select value from table where condition)
-- note that subqueries cannot be added directly in the output clause
-- so need to declare and set a variable that holds the value

insert into table1
output  inserted.id,@extracolumn into  @TemporaryTable -- or #TemporaryTable
values(1,'name',10)

select * from @TemporaryTable

Output is 输出是

id  userid
1   100

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM