加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

Mysql必读mysql中You can’t specify target table for update i

发布时间:2020-12-12 02:50:21 所属栏目:MySql教程 来源:网络整理
导读:《Mysql必读mysql中You can’t specify target table for update in FROM clause错误解决方法》要点: 本文介绍了Mysql必读mysql中You can’t specify target table for update in FROM clause错误解决方法,希望对您有用。如果有疑问,可以联系我们。 mysql

《Mysql必读mysql中You can’t specify target table for update in FROM clause错误解决方法》要点:
本文介绍了Mysql必读mysql中You can’t specify target table for update in FROM clause错误解决方法,希望对您有用。如果有疑问,可以联系我们。

mysql中You can't specify target table for update in FROM clause错误的意思是说,不能先select出同一表中的某些值,再update这个表(在同一语句中). 例如下面这个sql:
MYSQL数据库

代码如下:
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
)

改写成下面就行了:MYSQL数据库

代码如下:
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数据库

《Mysql必读mysql中You can’t specify target table for update in FROM clause错误解决方法》是否对您有启发,欢迎查看更多与《Mysql必读mysql中You can’t specify target table for update in FROM clause错误解决方法》相关教程,学精学透。编程之家PHP学院为您提供精彩教程。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读