使用MySQL将数据库中的记录加倍

时间:2011-03-29 12:48:22

标签: php mysql

如何使用mysql在现有表中对行进行双倍或三倍(复制也很好)?

6 个答案:

答案 0 :(得分:2)

如果没有PRIMARY KEY或UNIQUE索引,这应该可以解决问题。

INSERT INTO table SELECT * FROM table;

如果您确实有这样的索引,只需列出表中没有这些索引的所有列。例如。如果colA具有UNIQUE或PRIMARY KEY索引:

INSERT INTO table (colB, colC) SELECT colB, colC FROM table;

请注意,这仅在您的ID列(colA)设置了AUTO_INCREMENT属性时才有效(这通常是整数ID列的情况)。如果没有,那你就不走运了。在这种情况下,您无法使用INSERT INTO ... SELECT来复制行,因为您需要手动提供唯一索引。

答案 1 :(得分:1)

用语言说 使用select获取所有内容,而不是使用insert ....

答案 2 :(得分:1)

INSERT INTO table (SELECT * FROM table)

您必须排除主键。

INSERT INTO table (col1, col2) SELECT col1, col2 FROM table;

不要选择主键。

您必须提及除主键之外的所有字段。我相信你有一个自动增量列,不要在上面的命令中提到该列,但包括所有其他列。

答案 3 :(得分:1)

你不应该那样做 保持表格的正常形式,这意味着没有重复。

答案 4 :(得分:1)

我同意Shrapnel上校:你不应该这样做

桑德说得对:

  • 如果你想这样做,INSERT INTO table SELECT * FROM table就是这样 去
  • 如果有PRIMARY AUTOINCREMENT键,insert into table (all-but-key) select all-but-key from table
  • 如果有其他UNIQUE键,则无法执行此操作。

另一个肮脏的解决方法:

SELECT * FROM TABLE UNION ALL SELECT * FROM TABLE

您可以将其放在VIEW或合并表中......

答案 5 :(得分:0)

复制同一个表中所有行的简便方法:

INSERT INTO yourtable()
SELECT * FROM yourtable;

只有在桌面上没有任何唯一键时,此ofc才有效。