MySQL; слияние таблицы приводит к выравниванию строк

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

Таблица 1: 20 000 строк данных

Таблица индексов: 10 000 строк данных

Поэтому, если мне нужно будет вставить таблицу 1 в таблицу индексов, используя следующее:

INSERT IGNORE INTO 'database1'.'Index' SELECT * FROM
'database1'.'Table1' ;

Используя вышеизложенное, он вставляет только 10 000 строк доступных 20 000 для выравнивания.

4 ответа

Я предполагаю, что остальные 10 000 являются повторяющимися значениями, и поскольку вы используете IGNORE в INSERT, инструкция завершается без ошибок.


Поскольку вы используете INSERT IGNORE, я предполагаю, что у вас есть 10000 дубликатов ключей, которые молча отбрасываются. Разве вы не считаете это странным, что вам нужно?

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


Вы пробовали. ЗАМЕНИТЕ INTO, как INSERT, но не заменяйте полями uniq.

REPLACE INTO user (id,name) VALUES (12,"John");
#if there is user with id = 12 it wil lreplace it.


Это зависит от структуры таблиц. Можете ли вы показать нам "show create table..." на ваших двух таблицах?

Кроме того, перечислите отзывы, которые вы получаете от клиента mysql (например, "Записи: 100 дубликатов: 0 предупреждений: 0") - это помогает определить, что произошло и почему.

Если в вашей таблице есть значения с UNIQUE KEYS, вы не получите все вставки для успеха.

licensed under cc by-sa 3.0 with attribution.