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