2012-09-03 9 views
5

Mam tabelę powiedzieć table1(id, col2, col3) i chcę skopiować wszystkie dane id 1, ale z innym id powiedzieć 11 (id nie jest kolumna generowana automatycznie). Pisałem następujące zapytanie SQL, które nie działa dla mnie (co daje błąd składni):MySQL: zapytanie SQL do duplikowania danych w tej samej tabeli

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

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

iw jaki sposób ma to nie działało? Jaki błąd dostałeś? – BugFinder

+0

# 1064 - Masz błąd w składni SQL; sprawdź instrukcję, która odpowiada twojej wersji serwera MySQL dla właściwej składni – gmuhammad

+0

Problem polega na tym, że: nie używaj słowa kluczowego "VALUES" przy korzystaniu z insert ... wybierz –

Odpowiedz

8

Nie używaj "wartości" słowo kluczowe

INSERT INTO table1(
id, 
col2, 
col3 
) 


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

EDIT:

Sprawdź, czy pracujesz z odpowiednimi nazwami kolumn:

DESC table1; 
+0

+1, tylko jedna z wymienionych, potrzebna jest klauzula where id = 1. Aby to zadziałało, – davidethell

+0

usunęło słowo kluczowe VALUES, ale nadal nie działa Teraz pojawia się błąd # 1054 - Nieznana kolumna 'col2' w 'liście pól' – gmuhammad

+0

@gmuhammad co się stanie, jeśli napiszesz 'wybierz 11, col2, col3 z tabeli1'? –

2

Zastosowanie INSERT INTO ... SELECT z WHERE id = 1:

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

INSERT zaczyna VALUES lub SELECT, nie obu.

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

Wypróbuj :

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

lub jeśli potrzebujesz więcej coś takiego:

INSERT INTO table1(id, col2, col3) 
SELECT (SELECT MAX(id) FROM table1) + 1 , col2, col3 
FROM table1 
Powiązane problemy