2010-07-28 45 views
9

我正在尋找一種方法來爲單個列插入數據時執行多個行插入。MySQL:針對單個列的多個插入

下面是示例表:

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

我希望能夠插入像(「管理」,「作家」,「國防部」,「用戶」,「客人」)將其命名爲每行的列。

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行的值計數不匹配

這意味着它認爲我正在嘗試執行一個si單行插入。

我不確定我是否僅僅在這裏錯過了一些簡單的東西,但在這個用例的MySQL文檔中我沒有看到任何特別的東西。

回答

18

您的語法有點偏離。將圓括號放在您試圖插入的每個數據「set」(在這種情況下表示單個值)。

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

啊,謝謝!第一次使用多插入語法。我會接受一旦它讓我 – tsgrasser 2010-07-28 18:58:29

+1

你應該也知道這不適用於MSSQL。 MySQL和其他一些支持多個插入,但上次我使用SQL Server時,它不接受該語法。 – 2010-07-28 19:01:51

+0

我知道這是一個非常古老的答案,但只是想我會提到,從2008版本開始,這也適用於MSSQL。 – user1751825 2016-12-22 03:18:44

0

我會建議你不要在一列中放置多個值。 製作一個新表:

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