MySQL的;表合并导致行的均衡

时间:2012-03-09 21:02:39

标签: mysql

我正在尝试将所有共享相同数据结构的多个表合并到一个单个表中,但是,似乎在插入表时它所做的就是插入x行数等于其中的数量源。

表1:20,000个数据行

索引表:10,000个数据行

因此,如果我要使用以下内容将表1插入到索引表中:

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

使用上面的内容,它只插入10,000行可用的20,000行等于。

4 个答案:

答案 0 :(得分:1)

我的猜测是其他10,000个是重复值,并且由于您在IGNORE上使用INSERT,因此语句完成且没有错误。

答案 1 :(得分:0)

你尝试过吗?替换它就像INSERT但它不会被uniq字段替换。

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

答案 2 :(得分:0)

由于你正在使用INSERT IGNORE,我猜你有10000个重复的密钥被静默丢弃。难道你不觉得你需要那么奇怪吗?

根据您的表格布局,您需要一些方法来重新调整表格以绕过关键约束。例如,为您要插入的表创建一个新的自动增量键,附加另一个表,并以某种方式对重复进行排序。

答案 3 :(得分:0)

这取决于表格的结构。你能在两张桌子上向我们展示“show create table ...”吗?

此外,列出您从mysql客户端获得的反馈(例如,“记录:100个重复:0警告:0”) - 这有助于查明发生的事情和原因。

如果表中有UNIQUE KEYS值,则不会使所有插入成功。