【发布时间】:2011-10-22 18:55:30
【问题描述】:
我正在将所有记录从一个表复制到另一个表,该表将有一个额外的列来跟踪复制过程。此附加列将来自其他表。
我无法将这些现有表中的数据插入到新表中,需要您的意见。
(我无法在现有表中添加一个新列。我必须从中复制数据。)
【问题讨论】:
标签: insert insert-into
我正在将所有记录从一个表复制到另一个表,该表将有一个额外的列来跟踪复制过程。此附加列将来自其他表。
我无法将这些现有表中的数据插入到新表中,需要您的意见。
(我无法在现有表中添加一个新列。我必须从中复制数据。)
【问题讨论】:
标签: insert insert-into
应该很简单。我正在使用 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)
【讨论】:
select a.*, b.newCol ... 插入的列数是正确的并且以相同的顺序,它可能会起作用。很遗憾,我现在无法尝试。
我不确定您使用的是 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 到另一个表,只需将其添加到上述语句并删除“某些值”。
【讨论】: