无法从子查询中的同一表中删除

时间:2014-03-03 12:06:56

标签: mysql sql subquery sql-delete mysql-error-1093

我知道这个论点已经多次在这个网站上得到解决,我找不到工作的解决方案,所以我想我会把我的具体案例发给你,也许你可以帮助我......

我有一个节日,我需要消除那些低于前一天晚上平均评价的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>

2 个答案:

答案 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