删除Medals表中Sarah Smith数据时MySQL报#1064语法错误求助
排查MySQL DELETE JOIN语句的语法错误
你尝试删除Medals表中对应'Sarah Smith'的数据时,SQL语句存在MySQL语法规范问题,导致报错。
原语句及报错信息
执行的SQL语句:
DELETE FROM Medals JOIN Athletes ON Medals.AthleteID = Athletes.AthleteID WHERE AthleteName = 'Sarah Smith'
phpMyAdmin返回的错误:
MySQL said: Documentation
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'JOIN Athletes ON Medals.AthleteID = Athletes.AthleteID
WHERE AthleteName = 'S' at line 3
问题原因
MySQL的DELETE JOIN语法要求在DELETE关键字后明确指定要删除数据的表,原语句中DELETE FROM Medals的写法不符合MySQL的语法规则,这是导致报错的核心原因。
修正后的语句
提供两种符合MySQL规范的写法:
- 显式指定要删除的表,保留JOIN语法:
DELETE Medals FROM Medals JOIN Athletes ON Medals.AthleteID = Athletes.AthleteID WHERE Athletes.AthleteName = 'Sarah Smith'
- 使用多表删除的逗号分隔语法:
DELETE Medals FROM Medals, Athletes WHERE Medals.AthleteID = Athletes.AthleteID AND Athletes.AthleteName = 'Sarah Smith'
补充说明
错误信息中出现的'S'大概率是语句换行或字符截断导致的显示问题,无需额外处理,修正核心语法后即可正常执行。
内容的提问来源于stack exchange,提问作者Sorrow Division
相关产品推荐
相关产品推荐

