1

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

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

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

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

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

4

2 回答 2

3

如果你使用 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');
于 2012-05-30T11:52:50.313 回答
0
INSERT INTO roles 
SELECT _id+1,'454', 'USER' FROM roles ORDER BY _id DESC LIMIT 1
于 2012-05-30T11:54:08.440 回答