mysql中You can't specify target table for update in FROM clause错误的意思是说,不能先select出同一表中的某些值,再update这个表(在同一语句中)。 例如下面这个sql:
delete from tbl where id in ( select max(id) from tbl a where EXISTS ( select 1 from tbl b where a.tac=b.tac group by tac HAVING count(1)>1 ) group by tac )
改写成下面就行了:
delete from tbl where id in ( select a.id from ( select max(id) id from tbl a where EXISTS ( select 1 from tbl b where a.tac=b.tac group by tac HAVING count(1)>1 ) group by tac ) a )
也就是说将select出的结果再通过中间表select一遍,这样就规避了错误。注意,这个问题只出现于mysql,mssql和oracle不会出现此问题。
相关推荐
### MySQL中“You can’t specify target table for update in FROM clause”错误解决方法 在MySQL数据库管理过程中,遇到SQL语法错误是家常便饭,其中一种较为常见的错误是“You can’t specify target table for ...
...
在MySQL中,错误1093 - "You can't specify target table for update in FROM clause" 是一个常见的问题,它发生在尝试在`UPDATE`语句的`FROM`子句中直接引用要更新的同一张表时。这个错误表示MySQL不支持在`UPDATE`...
在MySQL数据库中,错误代码1093 - "You can’t specify target table ‘t’ for update in FROM clause" 是一个常见的错误,它通常发生在尝试在一个`UPDATE`语句的`FROM`子句中直接引用要更新的目标表时。...
错误消息"You can't specify target table 'wms_cabinet_form' for update in FROM clause"清楚地指出,在同一个UPDATE语句中,你不能先从`wms_cabinet_form`表中选择一些值,然后立即更新这个表。 在原始的UPDATE...
在平常的项目中,经常会碰到这样的问题:我需要在一张标中同时更新和查询出来的...结果却报错,报错信息为:You can't specify target table 'tb_test' for update in FROM clause,不能在同一语句中update,select同
错误提示是 `ERROR 1093 (HY000): You can't specify target table 'apples' for update in FROM clause.` 这意味着MySQL不允许在 `UPDATE` 语句的 `FROM` 子句中直接引用要更新的表。 解决办法: 尽管MySQL不支持...
这会导致错误 `[Err] 1093 – You can't specify target table 'a' for update in FROM clause`。MySQL不允许在`SET`或`WHERE`子句中直接引用被更新的表进行子查询。这是因为在执行过程中,MySQL无法确定子查询的...
导致了`java.sql.SQLException: You can’t specify target table ‘chat_messages’ for update in FROM clause`的错误。为了解决这个问题,我们需要对查询部分进行修改,确保它不直接引用正在插入的表。 修正后的...
这里要注意,子查询需要使用别名,并且需要使用`SELECT * FROM (…)`的格式,避免`You can't specify target table 'a_tmp' for update in FROM clause`错误。 **高级方法:多字段去重** 当需要根据多个字段进行...