多表删除时出现语法错误

时间:2013-03-15 11:15:32

标签: mysql sql

当我运行时:

DELETE FROM folders AS fo
LEFT OUTER JOIN files AS fi 
ON fo.folderId = fi.folderId
WHERE fi.folderId IS NULL AND (fo.folderId IN (63,1000))

...我收到语法错误:

  

#1064 - 您的SQL语法出错;检查与MySQL服务器版本对应的手册,以获得正确的语法   靠近'AS fo LEFT OUTER JOIN文件AS fi ON fo.folderId = fi.folderId   在第1行的'折叠'

代码基于SELECT查询,返回预期的行。错误消息的原因是什么?

2 个答案:

答案 0 :(得分:1)

DELETE
  FROM folders fo
 WHERE NOT EXISTS (SELECT 1
                     FROM files fi
                    WHERE fi.folderId = fo.folderId)
   AND fo.folderId IN (63, 1000)

答案 1 :(得分:1)

它“不起作用”并不奇怪。运行代码时出现语法错误:

  

SQL错误(1064):您的SQL语法中有错误;检查   手册,对应右边的MySQL服务器版本   在'AS fo LEFT OUTER JOIN文件附近使用的语法AS fi ON fo.folderId   = fi.folderId WHERE fi.fold'在第1行

correct syntax是:

DELETE fo -- Note I've added table name
FROM folders AS fo
LEFT OUTER JOIN files AS fi 
ON fo.folderId = fi.folderId
WHERE fi.folderId IS NULL AND (fo.folderId IN (63,1000));
相关问题