Запутанные операторы вставки - PullRequest
0 голосов
/ 22 октября 2011

Я копирую все записи из одной таблицы в другую, в которой будет один дополнительный столбец для отслеживания процесса копирования. Этот дополнительный столбец будет из другой таблицы.

Я не могу вставить данные в новую таблицу из этих существующих таблиц, и вы нуждаетесь в этом у вас.

(Я не могу добавить один новый столбец в существующую таблицу. Я должен скопировать данные из нее.)

Ответы [ 2 ]

0 голосов
/ 22 октября 2011

Я не уверен, используете ли вы 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

Вы сказали, что дополнительный столбец будет из «какой-то другой таблицы». Не могли бы Вы уточнить? Если вы можете присоединиться к этой другой таблице, просто добавьте это в приведенный выше оператор и удалите «некоторое значение».

0 голосов
/ 22 октября 2011

Должно быть довольно просто.Я использую LEFT OUTER JOIN, чтобы вы не пропустили ни одной строки из первой старой таблицы, если во второй старой таблице нет совпадающих строк.Вы можете настроить выделение, чтобы обеспечить значение по умолчанию, если новый столбец не имеет значения NULL.Новая таблица должна быть создана заранее.

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) 
...