当前位置: 首页 > 面试题库 >

如何在MySQL中使用自动递增字段复制一行并将其插入到同一表中?

申嘉慕
2023-03-14
问题内容

在MySQL中,我试图复制一排的 自动增量 column ID=1插入 数据到同一个表的新行column ID=2

如何在单个查询中执行此操作?


问题答案:

用途INSERT ... SELECT

insert into your_table (c1, c2, ...)
select c1, c2, ...
from your_table
where id = 1

c1, c2, ...除以外的所有列都在哪里id?如果要显式插入id2,则将其包括在INSERT列列表和SELECT中:

insert into your_table (id, c1, c2, ...)
select 2, c1, c2, ...
from your_table
where id = 1

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



 类似资料:
  • 我正在使用PHP和MySQL。 将新行插入到具有自动递增 id 列的表中。 在插入此新行时,我想将新插入行的自动递增 id # 复制到同一行/条目中的另一列中。 创建时,新条目/行应具有自动递增的 id 列和具有相同编号的另一列。 我最大的担忧: 我需要所有这些都正确可靠地发生,即使来自其他连接的其他事务可能正在服务器上发生。 我对last_insert_id()知之甚少...我害怕能够可靠地使用

  • 例如,我有一个包含2个表的数据库。第一个表(表 1)包含: userId 是我的主键,它是自动递增的。我的下一个表(表2)有: userId(来自表2)是我引用表1(userId)的外键。是否有一种方法可以插入到两个表的所有信息中,并使表2中的用户ID自动从表1中获取它引用的主键?或者,我必须为每个表执行多个插入,并显式地使外键具有相同的值。

  • 问题内容: 标题基本上总结了所有内容,包括我想在这里完成的工作。 一些更多的信息,我有一个包含4列的表。我需要它的精确副本,但只需要更改一列的值即可。 假设该列的客户编号为123456(其他值并不重要)。 如何复制整个表并将客户号更改为123457,然后将该副本插入到同一表中。 如果一切顺利,我应该拥有的记录(数据库中只有一个客户)是以前的两倍(只有客户编号已更改)。 我正在使用MSSQL2008

  • 我试图在表中插入一行,带有一个自动递增字段,但我遇到了错误。该表的结构为: id:自动增量 级别:文本 概念:文本 . 在w3c中,我了解到要将新记录插入表中,我们不必为“自动增量”列指定值(将自动添加唯一值)。 我做错了什么?

  • 问题内容: A)到目前为止我的方式: B)我想做这样的事情: 注意:我要复制到同一张表中。我只想轻松地将其全部复制到另一行,同时为新行赋予新的ID。 那是好的实践吗? 问题答案: 唯一的方法是像第一个示例一样列出所有列。没有像这样的语法 但是,出于SQL注入和计划缓存的原因,您应该使用参数化的SQL。

  • 问题内容: 使用MySQL 5.1.49,我正在尝试实现一个标记系统,我的问题是有两列的表:, (InnoDB) 使用query时,即使忽略了插入,自动增量值也会增加。 通常,这不会有问题,但是我希望有很多尝试为该特定表插入重复项,这意味着我下一个新行字段的值将跳得太多。 例如,我最终得到一个表,该表具有3行,但错误的是 另外,如果我不做而只是定期做并处理错误,则自动递增字段仍会增加,因此下一个真