2014-10-01 2 views
0

мне нужно вставить несколько строк из одной таблицы в другую, вот структура для обеих таблиц:SQL, как INSERT INTO таблицы из числа конкретных запуска ID

  • ID (INT)
  • courseID (INT)
  • курс (бит)
  • закладки (VARCHAR (100))
  • course_date (DateTime)
  • посттестовых (бит)
  • post_attempts (INT)

Колонка ID является первичным ключом с автоматическим приращением, так что если я использую INSERT INTO table1 SELECT * FROM table2, SQL генерирует эту ошибку # 1062 - Дублировать запись '1' для ключ 'PRIMARY' ,

Ну, я могу опустить столбец идентификатора, но проблема в том, что новый идентификатор автогенерируется. У меня есть ссылки на ID в другой таблице, поэтому мой вопрос: есть ли способ указать номер START для 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 
+0

если TSQL, использование SET IDENTITY_INSERT ON –

+0

SET IDENTITY_INSERT table1 ON и SET IDENTITY_INSERT TABLE1 OFF – mohan111

+0

Привет, не могли бы вы показать мне, как сделать интеграцию в мой код ... Я новичок на sql. Спасибо – 2014-10-01 11:02:11

ответ

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 

Но если вы хотите пропустить некоторое начальное значение S вы можете использовать WHERE условие при выборе:

... 
FROM table2 
WHERE ID > 10 
+0

ID - это поле auto_increment, вы не можете указывать в заявлении INSERT –

+0

Это неправда, это просто манипуляция данными –

+0

Вы можете указать поле автоматического приращения, только если отключить автоинкремент –

0

Вы можете установить начальное значение auto_increment следующим образом:

ALTER TABLE table1 AUTO_INCREMENT = 1; 

Для получения дополнительной информации, пожалуйста, пройти here

Смежные вопросы