MySQL: Multiple Inserts for a single column

◇◆丶佛笑我妖孽 提交于 2019-12-20 20:02:36

问题


I'm looking for a way to do multiple row inserts when I'm only inserting data for a single column.

Here is the example table:

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

I want to be able to insert something like ('admin', 'author', 'mod', 'user', 'guest') into the name column for each row.

The MySQL documentation shows that multiple inserts should be in the format:

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

However my statement ends up looking like this:

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

And I get the following:
ERROR 1136 (21S01): Column count doesn't match value count at row 1

Meaning that it thinks I'm trying to do a single row insert.

I'm not sure if I'm just missing something simple here, but I don't see anything in particular in the MySQL docs for this use case.


回答1:


your syntax is a bit off. put parentheses around each data "set" (meaning a single value in this case) that you are trying to insert.

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



回答2:


I will advise you Don't put multiple values in a column. make a new table:

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


来源:https://stackoverflow.com/questions/3356317/mysql-multiple-inserts-for-a-single-column

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!