【问题标题】:SELECT values of an INSERT INTO statementSELECT INSERT INTO 语句的值
【发布时间】:2015-10-07 03:36:31
【问题描述】:

我需要从 table1 中选择几列。我只需要插入其中一列以及一些任意硬编码数据并将其插入到 table2 中,同时还可以取回原始的 select 语句。

基本上,我想获得我的 INSERT INTO 语句的结果,而不是我在 SSMS 中获得的“(1 行受影响)”。

有没有办法做到这一点?


这是一个 SQLFiddle: http://sqlfiddle.com/#!3/e9beb/3

那些记录会很好地插入。但是,我希望我的 SELECT 语句的结果能够返回给我,这样我就可以一次完成所有操作,而无需多次读取或旅行。这可能吗?

【问题讨论】:

    标签: sql-server-2012 select-into


    【解决方案1】:

    您可以使用OUTPUT 子句:

    INSERT INTO Table2
    OUTPUT inserted.*
    SELECT Phrase, 'This is an automatic note by the system', GETDATE(), 1
    FROM Table1
    

    【讨论】:

      【解决方案2】:

      使用批处理语句并将中间结果存储在表变量中:

      DECLARE @intermediate TABLE (
          col1 type,
          col2 type,
          col3 type
      );
      INSERT INTO @intermediate VALUES ( ... );
      INSERT INTO destinationTable SELECT * FROM @intermediate;
      SELECT @intermediate;
      

      如果在代码中使用它,您可以将所有这些都放在一个命令文本字符串中。

      【讨论】:

        【解决方案3】:

        你有没有尝试过这样的事情:

        INSERT INTO Table1 (
        SELECT Phrase, Notes, GetDate, 1
        FROM Table2
        UNION
        SELECT Phrase, 'This is an automatic note by the system', GETDATE(), 1
        UNION
        )
        

        【讨论】:

          猜你喜欢
          • 2011-12-04
          • 2012-10-18
          • 2021-01-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-02-07
          相关资源
          最近更新 更多