如何依靠这个查询

时间:2011-09-22 18:38:00

标签: sql sql-server-2005 subquery

我正在做

INSERT INTO table1...  
   SELECT...  
   FROM table2

但是,我需要从table3中检索标识并在插入table1之前插入它。这两个插件需要一起出现,首先是table3插件。我尝试过这样的事情:

INSERT INTO table1 (col1, col2, col3)  
   SELECT (  
      col1=(insert into table3(col1, col2)values(1,1) select SCOPE_IDENTITY(),   
      col2, col3)  
   FROM table2

但这不起作用。 table1.col1确实需要将新插入到table3中的标识值。要插入的数据量可能不超过几百行。有什么建议吗?

1 个答案:

答案 0 :(得分:2)

您似乎可以使用Output Clause

BEGIN TRANSACTION

DECLARE @MyResults table(col1 int, col2 int, col3 int);

INSERT INTO table3 (col1, col2)
    OUTPUT SCOPE_IDENTITY(), table2.col2, table2.col3 INTO @MyResults
SELECT 1, 1 FROM table2

INSERT INTO table1 (col1, col2, col3)
SELECT col1, col2, col3 FROM @MyResults

COMMIT