首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在MySQL中复制一行并插入到具有自动增量字段的同一个表中?

如何在MySQL中复制一行并插入到具有自动增量字段的同一个表中?
EN

Stack Overflow用户
提问于 2012-02-06 14:26:32
回答 15查看 550.5K关注 0票数 277

在MySQL中,我尝试使用autoincrement column ID=1复制一行,并使用 column ID=2将数据插入到与新行相同的表中。

我如何在一个查询中做到这一点?

EN

回答 15

Stack Overflow用户

回答已采纳

发布于 2012-02-06 14:31:27

使用INSERT ... SELECT

代码语言:javascript
复制
insert into your_table (c1, c2, ...)
select c1, c2, ...
from your_table
where id = 1

其中,c1, c2, ...是除id之外的所有列。如果要显式插入时id为2,则将其包括在插入列列表和SELECT中:

代码语言:javascript
复制
insert into your_table (id, c1, c2, ...)
select 2, c1, c2, ...
from your_table
where id = 1

当然,在第二种情况下,您必须注意可能重复的id 2。

票数 425
EN

Stack Overflow用户

发布于 2012-10-12 14:53:33

在IMO中,最好只使用SQL语句来复制该行,同时只引用您必须和想要更改的列。

代码语言:javascript
复制
CREATE TEMPORARY TABLE temp_table ENGINE=MEMORY

SELECT * FROM your_table WHERE id=1;
UPDATE temp_table SET id=0; /* Update other values at will. */

INSERT INTO your_table SELECT * FROM temp_table;
DROP TABLE temp_table;

另请参阅av8n.com - How to Clone an SQL Record

好处:

  • SQL语句2只提到在克隆过程中需要更改的字段。他们不知道-或者不关心-其他领域。其他字段只是顺其自然,原封不动。这使得SQL语句更容易编写、更容易阅读、更容易维护,并且使用了更多的extensible.
  • Only普通MySQL语句。不需要其他工具或编程语言。
  • 在一个原子操作中将完全正确的记录插入到your_table中。
票数 55
EN

Stack Overflow用户

发布于 2012-02-06 14:33:03

假设表是user(id, user_name, user_email)

您可以使用以下查询:

代码语言:javascript
复制
INSERT INTO user (SELECT NULL,user_name, user_email FROM user WHERE id = 1)
票数 18
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9156340

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档