MySQL嵌套查询查找错误

标签 mysql

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

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

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

Lookup Error - MySQL Database Error: You can't specify target table 'roles' for update in FROM clause

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

最佳答案

如果您使用的是 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然后不为它提供任何值(value)。 MySQL 将完成剩下的工作:

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

关于MySQL嵌套查询查找错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10815741/

相关文章:

mysql - PhpMyAdmin 栏目搜索

mysql - 为不同用户选择结果

php - 加密和解密存储在 cookie 中的信息

mysql - ORDER BY 百分比不起作用

mysql - 如何在MySQL中搜索表的多个列?

MySql子查询删除语句错误

java - 将项目从 Windows 导出到 Debian 时出现 Mysql 错误

mysql - 'root' @'localhost'(使用密码 : NO) - can't access anything in mysql

java - 通过传递变量使 <a href> 标签可下载?

php - 从 mysql 表中选择行并使用复选框和文本输入添加到另一个表中?