mysql - SQL,如何从特定的起始编号ID INSERT INTO 表

标签 mysql sql

我需要将一些行从一个表插入到另一个表,这是两个表的结构:

  • ID(整数)
  • 类(class) ID(整数)
  • 类(class)(位)
  • 书签(varchar(100))
  • 类(class)日期(日期时间)
  • 后测试(位)
  • post_attempts(整数)

ID列是一个自动递增的主键,所以如果我使用 INSERT INTO table1 SELECT * FROM table2, sql 生成此错误#1062 - 键“PRIMARY”的重复条目“1”

我可以省略 ID 列,但问题是新 ID 是自动生成的。我在另一个表中有 ID 引用,所以我的问题是:当我键入下面的命令时,有没有办法指定 ID 的起始编号?

INSERT INTO table1(
    course_id,
    course,
    bookmark,
    course_date,
    posttest,
    post_attempts
)
SELECT
    course_id,
    course,
    bookmark,
    course_date,
    posttest,
    post_attempts
FROM table2

最佳答案

要增加新插入数据的 ID 值,请执行以下操作:

INSERT INTO table1(
    ID,
    course_id,
    course,
    bookmark,
    course_date,
    posttest,
    post_attempts
)
SELECT
    ID + 1000 AS ID,
    course_id,
    course,
    bookmark,
    course_date,
    posttest,
    post_attempts
FROM table2

但是如果您想跳过一些起始值,您可以在选择时使用 WHERE 子句:

...
FROM table2
WHERE ID > 10

关于mysql - SQL,如何从特定的起始编号ID INSERT INTO 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26139708/

相关文章:

mysql - 寻找使用混合 bin 格式从一个 mysql 同步到另一个 mysql 的工具

php - 锁定 Mysql 表以供写入但允许读取

php - 隐藏已出现在 MySQL 表中的行的最简单方法是什么?

mysql - 用于统计存储的大规模 MySQL 数据库 - 您有什么推荐?

mysql - 如何考虑另一表中的值来计算一列的值

sql - 使用 ON DELETE CASCADE 更新外键约束未更新?

mysql - 先按完全匹配顺序对 Op.or order 进行 Sequelize

mysql - 将从日期时间列中提取的时间与 MariaDB 和 MySQL 中的静态时间进行比较

mysql - 在 MySQL 中使用 "stuff.whatever"命名约定是否有必要或有益?

php - 基本 SQL 语法、MAMP、PHP 和 MySQL