Объединить и обновить первичный ключ - PullRequest
4 голосов
/ 24 декабря 2010

Я посмотрел, но не нашел решения, которое кажется простой проблемой.

У меня много таблиц с одинаковой структурой, и я хочу объединить их. Единственная проблема заключается в том, что все они имеют поле id в качестве первичного ключа. В первичном ключе будет много дубликатов. Неважно, что идентификатор в конечном итоге. Как объединить все таблицы, чтобы не потерять данные?

Ответы [ 2 ]

5 голосов
/ 24 декабря 2010

Создайте поле AUTO_INCREMENT в новой таблице и пропустите его из списка значений:

CREATE TABLE NEW_TABLE (id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, col1 …, col2 …, …);

INSERT
INTO    new_table (col1, col2, …)
SELECT  col1, col2
FROM    old_table_1
UNION ALL
SELECT  col1, col2
FROM    old_table_2
UNION ALL
…
1 голос
/ 24 декабря 2010

В таблице назначения используйте поле с автоинкрементом в качестве первичного ключа.Затем скопируйте все столбцы из других таблиц , кроме первичного ключа , в свою новую таблицу.

INSERT new_table (col1, col2 , col3)
SELECT col1, col2, col3
FROM old_table
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...