当我只为一个列插入数据时,我正在寻找一种方法来进行多行插入。
以下是示例表:
+-------+-------------+------+-----+---------+----------------+
| 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');
我得到以下内容:
ERROR 1136(21S01):列数与第1行的值计数不匹配
这意味着它认为我正在尝试进行单行插入。
我不确定我是否只是在这里遗漏了一些简单的东西,但我没有在这个用例的MySQL文档中看到任何特别的东西。
答案 0 :(得分:19)
你的语法有点偏。在您尝试插入的每个数据“set”(在本例中为单个值)周围加上括号。
INSERT INTO User_Roll(name) VALUES ('admin'), ('author'), ('mod'), ('user'), ('guest');
答案 1 :(得分:0)
我会建议你不要在列中放入多个值。 制作一张新表:
INSERT INTO table_name (id, name) VALUES (1, 'name1'), (1, 'name2'), (1, 'name3'), (1, 'name4');