
[英]MySQL Query Multiple Joins duplicating data for each row? JIRA Database
[英]Duplicating a row in MySQL without recoding for database change
给定以下表结构:
ID
Field1
Field2
Field3
我想复制表中的一条记录。 伪代码如下所示:
DUPLICATE * IN MyTable WHERE ID = 3
这是我的约束:
我不想这样做在PHP。
您可以使用select语句插入行。 如果要插入具有所有相同值的新行,只需编写一条select语句即可获取所需的值。 尝试这样的事情:
INSERT INTO myTable (field1, field2, field3)
SELECT field1, field2, field3 FROM myTable WHERE id = 3;
这是一个SQL Fiddle示例。
编辑
如果您不知道有多少个字段,则可以选择使用临时表。 例如,请参阅本文 。 之所以需要一个临时表,是因为您不能简单地重新插入该行,因为将有重复的键错误。 因此逻辑如下:将行添加到新表中,更改ID,将具有新ID的重复行插入旧表中,并删除临时表。
假设您的id
列为auto_increment,则可以将新的id设置为当前的最大id +1。您不必这样做,但是只要您可以通过某种方式将id更新为尚不存在的方式 ,这将起作用。 尝试以下方法:
CREATE TEMPORARY TABLE temp SELECT * FROM myTable WHERE id = 3;
UPDATE temp SET id = (SELECT MAX(id) FROM myTable) + 1;
INSERT INTO myTable SELECT * FROM temp;
DROP TABLE temp;
这是另一个SQL Fiddle示例。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.