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

时间:2014-10-01 10:53:38

标签: mysql sql

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

  • ID(int)
  • courseID(int)
  • 当然(位)
  • 书签(varchar(100))
  • course_date(datetime)
  • posttest(bit)
  • post_attempts(int)

ID列是具有自动增量的主键,因此如果我使用 INSERT INTO table1 SELECT * FROM table2, sql生成此错误#1062 - 重复条目' 1'关键' PRIMARY'

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

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

2 个答案:

答案 0 :(得分:0)

您可以按如下方式设置auto_increment起始值:

ALTER TABLE table1 AUTO_INCREMENT = 1;

有关详细信息,请转到here

答案 1 :(得分:0)

要增加新插入数据的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