MySQL错误: You can't specify target table 'users_words' for update in FROM clause

标签 mysql sql select sql-update

请看一下我的 MySQL 子句。

UPDATE `users_words` SET `priority` = (SELECT MAX(`priority`)+1 FROM `users_words`) where `userid` = 89 AND `wordid`="agree"

这里我要更新priority字段的现有最大值 priority 加 1字段值。但我收到错误 You can't specify target table 'users_words' for update in FROM clause .

如何解决这个问题?

最佳答案

只需将子查询包装在另一个 SELECT 中:

UPDATE `users_words` 
SET `priority` = (SELECT x.* FROM (SELECT MAX(`priority`)+1 FROM `users_words`) x) 
WHERE `userid` = 89 AND `wordid`="agree"

关于MySQL错误: You can't specify target table 'users_words' for update in FROM clause,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23770598/

相关文章:

MySQL如何获取像日期格式一样分隔的月份和年份

php - MySQL 无法满足我的需求

mysql - 尝试将计数结果与值进行比较时,连接查询无法按预期工作

mysql - 在一个表上添加多个索引对插入有害吗?

mysql - 如何根据关系获取一条记录的多条记录?

Mysql查询得到想要的结果

mysql - 如何使用 MySQL 在表中创建嵌套 AUTO_INCRMENT 字段?

php - 将最新的 MaxMind GeoLite2 数据库导入 MySQL

mysql - 在哪里与拥有

mysql - 每个不同名称的总数量