我知道这个论点已经多次在这个网站上得到解决,我找不到工作的解决方案,所以我想我会把我的具体案例发给你,也许你可以帮助我......
我有一个节日,我需要消除那些低于前一天晚上平均评价的20%的歌曲。
我试过这个:
DELETE FROM concorre AS C
WHERE C.dataSer='2014-02-24'
AND C.votoTot<(SELECT AVG(B.votoTot)
FROM concorre AS B
WHERE B.dataSer='2014-02-23')/5
它解决了“同一个表问题”,但仍然给我一个错误:
#1064 - 您的SQL语法出错;查看与您的MySQL服务器版本对应的手册,以便在'AS C WHERE C.dataSer ='2014-02-24'和C.votoTot&lt;(SELECT AVG(votoTot)FROM concor''第1行附近使用正确的语法) / p>
答案 0 :(得分:0)
试试这个
DELETE c FROM concorre C
JOIN (SELECT AVG(B.votoTot) average FROM concorre B WHERE B.dataSer='2014-02-23') d
WHERE C.dataSer='2014-02-24'
AND C.votoTot < d.average /5
答案 1 :(得分:0)
MySQL不允许在语句的任何子查询中选择外部查询中正在更新/删除的表。
在这里,您要从concorre
表中删除,并在子查询中引用相同的表。
你可以尝试这样的事情:MySQL DELETE FROM with subquery as condition