Как мне объединить две таблицы? - PullRequest
0 голосов
/ 12 января 2011

У меня есть две таблицы, каждая с 50000 данными.id обеих таблиц начинается с 1 - 50000, поэтому, когда я пытаюсь вставить в table_1 из table_2 с помощью

INSERT IGNORE
  INTO table_1 
SELECT *
  FROM table_2

, он полностью переписывает существующую.Я не хочу переписывать его, но добавить как новый, так что это будет 100к.но может указывать от 5 до 10 дубликатов в столбце индекса, поэтому проверка дубликатов также выполняется в индексе.как я могу это сделать ??

Ответы [ 3 ]

0 голосов
/ 12 января 2011

Если table_1 и table_2 должны иметь разные ключи прежде всего для успешного слияния

ключи таблицы_1 должны начинаться с 1-50000, а значение ключа таблицы_2 должно начинаться с 50001-100000

Для дублирования вы можете иметь дело с использованием функции обновления в mysql

INSERT INTO table_1
    SELECT * FROM table_2
ON DUPLICATE KEY UPDATE table_1.val=table_1.val
0 голосов
/ 12 января 2011

Если есть столбец первичного ключа, вы должны исключить его из вставки, если там есть дубликаты.

Одним из решений является вставка с выбором, удаляющим дублирующиеся значения.

INSERT IGNORE INTO table_1 (f1, f2, f3)
SELECT f1, f2, f2 FROM table_2 WHERE table_2.index NOT IN (SELECT index FROM table_1)

OBS, это не очень эффективно на медленном сервере баз данных и может быть написано лучше с большим количеством информации о таблицах.

0 голосов
/ 12 января 2011

Используйте PHP или другой любимый язык, это будет примерно 10-20 строк кода ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...