Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

MySQL: Multiple Inserts for a single column

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.

like image 234
tsgrasser Avatar asked Jul 28 '10 18:07

tsgrasser


People also ask

How do I insert multiple records in one column in SQL?

INSERT-SELECT-UNION query to insert multiple records Thus, we can use INSERT-SELECT-UNION query to insert data into multiple rows of the table. The SQL UNION query helps to select all the data that has been enclosed by the SELECT query through the INSERT statement.

How do I insert values into a single column in SQL?

INSERT INTO Syntax Specify both the column names and the values to be inserted: INSERT INTO table_name (column1, column2, column3, ...)

How do I insert multiple records in one query in MySQL?

Insert multiple rows in MySQL with the help of “values”. You can enclose the values with parentheses set with comma separation.

Can you insert multiple values in MySQL?

INSERT statements that use VALUES syntax can insert multiple rows. To do this, include multiple lists of comma-separated column values, with lists enclosed within parentheses and separated by commas.


2 Answers

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');
like image 109
Pooja Khatri Avatar answered Nov 15 '22 20:11

Pooja Khatri


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');
like image 21
Scott M. Avatar answered Nov 15 '22 18:11

Scott M.