2010-07-28 9 views
9

Szukam sposobu na wstawianie wielu wierszy, gdy wstawiam tylko dane dla pojedynczej kolumny.MySQL: Wiele wstawek dla pojedynczej kolumny

Oto przykład tabela:

+-------+-------------+------+-----+---------+----------------+ 
| Field | Type  | Null | Key | Default | Extra   | 
+-------+-------------+------+-----+---------+----------------+ 
| id | tinyint(4) | NO | PRI | NULL | auto_increment | 
| name | varchar(40) | NO | UNI | NULL |    | 
+-------+-------------+------+-----+---------+----------------+ 

Chcę móc wstawić coś podobnego („Administrator”, „autor”, „mod”, „użytkownik”, „guest”) w imieniu kolumna dla każdego wiersza.

Dokumentacja MySQL pokazuje, że wielokrotne wkładki powinna być w formacie:

INSERT INTO tbl_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9); 

jednak kończy się moja wypowiedź wygląda tak:

INSERT INTO User_Role(name) VALUES ('admin','author','mod','user','guest'); 

I uzyskać następujące:
ERROR 1136 (21S01): Liczba kolumn nie jest zgodna z liczbą wierszy w wierszu 1

To znaczy, że myśli, że próbuję zrobić si Wstaw wiersz.

Nie jestem pewien, czy po prostu brakuje mi czegoś prostego tutaj, ale nie widzę niczego szczególnego w dokumentach MySQL dla tego przypadku użycia.

Odpowiedz

18

Twoja składnia jest nieco wyłączona. umieścić nawiasy wokół każdego "zestawu" danych (oznaczającego pojedynczą wartość w tym przypadku), które próbujesz wstawić.

INSERT INTO User_Roll(name) VALUES ('admin'), ('author'), ('mod'), ('user'), ('guest'); 
+0

Ah, dzięki! Pierwsza praca ze składnią wielowątkową. Przyjmuję, gdy tylko pozwoli mi to być – tsgrasser

+1

, powinieneś także wiedzieć, że to nie działa w MSSQL. MySQL i kilka innych obsługuje wiele wstawek, ale ostatnio użyłem SQL Servera, który nie akceptował tej składni. –

+0

Wiem, że jest to bardzo stara odpowiedź, ale pomyślałem, że wspomnę o tej wersji od wersji 2008, działa to również w MSSQL. – user1751825

0

Doradzę Nie umieszczaj wielu wartości w kolumnie. zrób nowy stół:

 INSERT INTO table_name (id, name) VALUES (1, 'name1'), (1, 'name2'), (1, 'name3'), (1, 'name4'); 
Powiązane problemy