天上的海风博客

天上海风,风轻云涌

mysql中You can't specify target table for update in FROM clause错误
情景:执行删除【delete】语句时候,mysql中由于语法问题,导致sql会报错,提示错误信息是You can't specify target table for update in FROM clause;大体意思是无法指定“从”子句中更新的目标表.例如下列sql:

DELETE t
FROM
web_ri_plyedr_due t
WHERE
t.C_PLYEDRDUE_PK_ID in ( 
SELECT
MIN(q.C_PLYEDRDUE_PK_ID) 
FROM
web_ri_plyedr_due q
WHERE
q.C_PLY_NO = '1000001010001160000000007'

);


可以修改如下语句:


DELETE t
FROM
web_ri_plyedr_due t
WHERE
t.C_PLYEDRDUE_PK_ID =(SELECT w.id FROM(
SELECT
MIN(q.C_PLYEDRDUE_PK_ID)  AS id      ##--给字段起一个别名
FROM
web_ri_plyedr_due q
WHERE
q.C_PLY_NO = '1000001010001160000000007'

);


也可以理解为将select出的结果再通过中间表select一遍,这样就规避了错误。注意,这个问题只出现于mysql,mssql和oracle不会出现此问题。

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_16736531/article/details/53994106
文章标签: mysql oracle sql
个人分类: mysql学习
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

mysql中You can't specify target table for update in FROM clause错误

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭