如何使用mysql在现有表中对行进行双倍或三倍(复制也很好)?
答案 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
就是这样
去insert into table (all-but-key) select all-but-key from table
另一个肮脏的解决方法:
SELECT * FROM TABLE UNION ALL SELECT * FROM TABLE
您可以将其放在VIEW或合并表中......
答案 5 :(得分:0)
复制同一个表中所有行的简便方法:
INSERT INTO yourtable()
SELECT * FROM yourtable;
只有在桌面上没有任何唯一键时,此ofc才有效。