2012-09-03 3 views
5

У меня есть таблица table1(id, col2, col3), и я хочу дублировать все данные id 1, но с разными id сказать 11 (идентификатор не генерируется автоматически). Я написал следующий SQL-запрос, который не работает для меня (давая ошибки синтаксиса):MySQL: SQL вставить запрос для дублирования данных в одной таблице

INSERT INTO table1(
id, 
col2, 
col3 
) 
VALUES (

SELECT 11 , col2, col3 
FROM table1 WHERE id=1 
) 
+0

и каким образом это уже не работает? Какую ошибку вы получили? – BugFinder

+0

# 1064 - У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии сервера MySQL, для правильного синтаксиса – gmuhammad

+0

Проблема заключается в следующем: не ставьте ключевое слово «VALUES» при использовании вставки ... выберите –

ответ

8

Не используйте "ЦЕННОСТИ" ключевое слово

INSERT INTO table1(
id, 
col2, 
col3 
) 


SELECT 11 , col2, col3 
FROM table1 
WHERE id = 1 

EDIT:

Проверьте, если вы работаете с правильными именами столбцов:

DESC table1; 
+0

+1, единственное, что упомянуло, что вам нужно предложение where id = 1, чтобы сделать это. – davidethell

+0

удалил ключевое слово VALUES, но все еще не работает Теперь получив ошибку # 1054 - Неизвестный столбец «col2» в «списке полей» – gmuhammad

+0

@gmuhammad, что произойдет, если вы напишете 'select 11, col2, col3 из таблицы1'? –

2

Использование INSERT INTO ... SELECT с WHERE id = 1:

INSERT INTO table1(id, col2, col3) 
SELECT '1' + id , col2, col3 
FROM table1 
WHERE id = 1 
2

INSERT принимает VALUES или SELECT, но не оба.

INSERT INTO table1(id, col2, col3) 
SELECT 11 , col2, col3 
FROM table1 
WHERE id = 1 
3

Попробуйте это :

INSERT INTO table1(
id, 
col2, 
col3 
) 
SELECT 11 , col2, col3 
FROM table1 
WHERE table1.id = 1 

ИЛИ если вам нужно больше что-то вроде этого:

INSERT INTO table1(id, col2, col3) 
SELECT (SELECT MAX(id) FROM table1) + 1 , col2, col3 
FROM table1 
Смежные вопросы