我正在尝试使用嵌套查询来避免发出两个不同的查询。我的嵌套查询如下所示;
INSERT INTO roles (
_id,
user_id,
user_role)
VALUES (
((SELECT _id FROM roles ORDER BY _id DESC LIMIT 1)+1), '454', 'USER')
但是当我执行时,我得到了;
查找错误 - MySQL数据库错误:您无法指定目标表 FROM子句中更新的“角色”
这个查询是否有任何解决方法,或者我根本无法在同一个表上插入和选择?
答案 0 :(得分: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');
答案 1 :(得分:0)
INSERT INTO roles
SELECT _id+1,'454', 'USER' FROM roles ORDER BY _id DESC LIMIT 1