我需要从table1中选择几列。我只需要插入这些列中的一个以及一些任意硬编码数据并将其插入到table2中,同时还要返回原始的select语句。
基本上我想得到我的INSERT INTO语句的结果,而不是我在SSMS中得到的“(1行(s)受影响的)”。
有办法做到这一点吗?
这是一个SQLFiddle: http://sqlfiddle.com/#!3/e9beb/3
这些记录会很好地插入。但是,我希望SELECT语句的结果能够回到我身边,这样我就可以一次完成所有操作而无需多次读取或跳转。这可能吗?
答案 0 :(得分:2)
使用批处理语句并将中间结果存储在表变量中:
DECLARE @intermediate TABLE (
col1 type,
col2 type,
col3 type
);
INSERT INTO @intermediate VALUES ( ... );
INSERT INTO destinationTable SELECT * FROM @intermediate;
SELECT @intermediate;
如果在代码中使用此代码,则可以在一个命令文本字符串中包含所有这些内容。
答案 1 :(得分:2)
您可以使用OUTPUT
子句:
INSERT INTO Table2
OUTPUT inserted.*
SELECT Phrase, 'This is an automatic note by the system', GETDATE(), 1
FROM Table1
答案 2 :(得分:0)
你有没有试过这样的事情:
INSERT INTO Table1 (
SELECT Phrase, Notes, GetDate, 1
FROM Table2
UNION
SELECT Phrase, 'This is an automatic note by the system', GETDATE(), 1
UNION
)