【问题标题】:MySQL nested query Lookup errorMySQL嵌套查询查找错误
【发布时间】:2012-05-31 03:01:43
【问题描述】:

我正在尝试使用嵌套查询来避免发出两个不同的查询。我的嵌套查询如下图;

INSERT INTO roles (
   _id, 
   user_id,
   user_role)
VALUES (
((SELECT _id FROM roles ORDER BY _id DESC LIMIT 1)+1), '454', 'USER')

但是当我执行时我得到了;

查找错误 - MySQL 数据库错误:您无法指定目标表 FROM 子句中用于更新的“角色”

此查询是否有任何解决方法,或者我根本无法在同一个表上进行插入和选择?

【问题讨论】:

    标签: mysql


    【解决方案1】:

    如果你使用 MySQL >= 4.0.14,你可以使用INSERT ... SELECT

    INSERT INTO roles (
      _id, 
     user_id,
     user_role
    )
    SELECT _id + 1, '454', 'USER' FROM roles ORDER BY _id DESC LIMIT 1
    

    但是,看起来您可能只想将_id 列设为AUTO_INCREMENT,然后不为其提供任何价值。 MySQL 将完成剩下的工作:

    ALTER TABLE roles MODIFY _id INT AUTO_INCREMENT;
    INSERT INTO roles (user_id, user_role) VALUES (454, 'USER');
    

    【讨论】:

      【解决方案2】:
      INSERT INTO roles 
      SELECT _id+1,'454', 'USER' FROM roles ORDER BY _id DESC LIMIT 1
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-06-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-02-16
        • 1970-01-01
        相关资源
        最近更新 更多