【问题标题】:MySQL: Multiple Inserts for a single columnMySQL:单个列的多个插入
【发布时间】:2011-03-22 08:13:45
【问题描述】:

当我只为单列插入数据时,我正在寻找一种方法来进行多行插入。

这是示例表:

+-------+-------------+------+-----+---------+----------------+
| 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 文档中没有看到任何关于这个用例的特别内容。

【问题讨论】:

    标签: sql mysql mysql-error-1136


    【解决方案1】:

    我会建议您不要在一列中放置多个值。 创建一个新表:

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

    【讨论】:

      【解决方案2】:

      你的语法有点不对劲。在您尝试插入的每个数据“集”(在这种情况下表示单个值)周围加上括号。

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

      【讨论】:

      • 啊,谢谢!第一次使用多插入语法。一旦允许我就会接受
      • 您还应该知道这在 MSSQL 中不起作用。 MySQL 和其他几个支持多个插入,但上次我使用 SQL Server 它不接受这种语法。
      • 我知道这是一个非常古老的答案,但我只是想提一下,从 2008 版开始,这也适用于 MSSQL。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-11
      • 2011-06-14
      相关资源
      最近更新 更多