MySQL: несколько вставок для одного столбца - PullRequest
9 голосов
/ 28 июля 2010

Я ищу способ вставки нескольких строк, когда я вставляю данные только для одного столбца.

Вот пример таблицы:

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

Я хочу иметь возможность вставить что-то вроде ('admin', 'author', 'mod', 'user', 'guest') в столбец имени для каждой строки.

Документация MySQL показывает, что несколько вставок должны быть в формате:

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

Однако мое утверждение выглядит так:

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

И я получаю следующее:
ОШИБКА 1136 (21S01): количество столбцов не соответствует значению в строке 1

Это означает, что мне кажется, что я пытаюсь вставить одну строку.

Я не уверен, что здесь просто пропущено что-то простое, но я не вижу ничего особенного в документации по MySQL для этого варианта использования.

Ответы [ 2 ]

19 голосов
/ 28 июля 2010

Ваш синтаксис немного отключен. поместите круглые скобки вокруг каждого набора данных (в данном случае это означает одно значение), который вы пытаетесь вставить.

INSERT INTO User_Roll(name) VALUES ('admin'), ('author'), ('mod'), ('user'), ('guest');
0 голосов
/ 20 февраля 2018

Я советую вам не помещать несколько значений в столбец. составить новую таблицу:

     INSERT INTO table_name (id, name) VALUES (1, 'name1'), (1, 'name2'), (1, 'name3'), (1, 'name4');
...