mysql - 1093 - 您无法在 FROM 子句中指定用于更新的目标表 'is_items'

标签 mysql mysql-error-1093

我尝试按顺序设置“id”列的值,但我的查询不起作用:

UPDATE is_items SET id=(SELECT max(id)+1 FROM is_items WHERE id<160)

错误:

[Err] 1093 - You can't specify target table 'is_items' for update in FROM clause

我看到其他人问了同样的问题,但我不太明白解决方案......

提前致谢,

国王的问候

最佳答案

您可以使用用户定义的变量分两步完成:

set @id := (SELECT max(id)+1 FROM is_items WHERE id<160);
UPDATE is_items SET id=@id;

关于mysql - 1093 - 您无法在 FROM 子句中指定用于更新的目标表 'is_items',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29424426/

相关文章:

mysql - SQL : Using the target table in an UPDATE statement in a nested FROM clause

mysql - 如何在第二个表中使用 select group by 更新表并将其本身作为 MySQL 中的数据源?

php - 如何创建表之间的关系?

java - 通过Java从MySQL数据库下载BLOB数据

mysql - 从与插入或更新相同的表中选择

sql - 无法使用下一条记录中的同一列更新表错误 1093

mysql - 将mysql中的值从column1复制到column2

c# - linq 中的虚拟(预定义)列分组

.Net Core 中的 MySql.Data.MySqlClient.MySqlException : 'Unable to connect to any of the specified MySQL hosts.

mysql - 根据其自己的表中的值更新列