当我运行时:
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
查询,返回预期的行。错误消息的原因是什么?
答案 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行
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));