我需要将一些行从一个表插入到另一个表,这是两个表的结构:
- 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/