【问题标题】:Confused insert statements混乱的插入语句
【发布时间】:2011-10-22 18:55:30
【问题描述】:

我正在将所有记录从一个表复制到另一个表,该表将有一个额外的列来跟踪复制过程。此附加列将来自其他表。

我无法将这些现有表中的数据插入到新表中,需要您的意见。

(我无法在现有表中添加一个新列。我必须从中复制数据。)

【问题讨论】:

    标签: insert insert-into


    【解决方案1】:

    应该很简单。我正在使用 LEFT OUTER JOIN,这样如果第二个旧表中没有任何匹配的行,您就不会省略第一个旧表中的任何行。如果新列不可为空,您可以调整选择以提供默认值。应该事先创建新表。

    INSERT INTO newtable (colA,colB,...,newCol)
        (SELECT a.colA, a.colB,..., b.newCol
         FROM oldtable1 a
             LEFT OUTER JOIN oldtable2 b on a.colA = b.colA) 
    

    【讨论】:

    • 谢谢......但我的问题是我在旧表中有 230 列。那么我必须按上面所示输入它们吗? a.cola, a,colb,...a.col230????有没有其他方法可以做到这一点?
    • 您可以尝试省略列说明符并执行select a.*, b.newCol ... 插入的列数是正确的并且以相同的顺序,它可能会起作用。很遗憾,我现在无法尝试。
    【解决方案2】:

    我不确定您使用的是 SQL Server 还是 MySQL 或其他东西,但类似的东西应该可以工作。

    INSERT INTO table_name (col1, col2, col_for_tracking_copy)
    SELECT col1, col2, 'some value' AS col_for_tracking_copy
    FROM table_name2
    

    您说附加列将来自“其他表”。你可以再详细一点吗?如果您可以 JOIN 到另一个表,只需将其添加到上述语句并删除“某些值”。

    【讨论】:

      猜你喜欢
      • 2015-03-18
      • 2014-02-19
      • 2021-06-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-28
      • 2012-07-24
      • 1970-01-01
      相关资源
      最近更新 更多