项目场景:
`MySQl报错: 1093 - You can’t specify target table ‘class’ for update in FROM clause
问题描述
1093 - You can’t specify target table ‘class’ for update in FROM clause
删除最大值那个数据
delete from class where cid = (select max(cid) from class );
原因分析:
这个错误通常在MySQL中出现,当你尝试在UPDATE查询的FROM子句中指定与UPDATE目标表相同的表时,就会出现这个错误。
MySQL不允许在FROM子句中直接引用UPDATE操作的目标表,这是为了避免可能导致不确定性或冲突的情况发生。因此,你需要使用子查询或其他方法来解决这个问题。
以下是一种解决方法,使用临时表来避免直接在FROM子句中引用目标表:
delete from class where cid = (select max(s.cid) from (select cid from class ) as s);
在这个例子中,内部的子查询 (select cid from class) 用于创建一个临时表,该临时表包含了从 ‘class’ 表中选出的所有行。然后在UPDATE语句的WHERE子句中引用了这个临时表。
使用这种方法,你就可以避免在FROM子句中引用目标表而导致的错误。请记住,根据你的实际需求,可能存在其他解决方案,这只是其中一种常见的方法。。
解决方案:
select 子句用临时表