执行含NATURAL JOIN的SQL查询时WHERE子句附近报语法错误如何解决
问题成因
- 语法错误来源于不合法的字符串标识符号:SQL规范要求使用半角单引号
'包裹字符串常量,你当前语句中包裹Uncle Samsonite和Shakespeare的是中文全角单引号‘/’,不属于SQL可识别的合法字符串边界,因此解析到对应位置时触发报错。 - 该报错和WHERE子句中的表名前缀无关,即便删除前缀,只要全角引号未修正,语法错误就会持续存在。
解决方案
将WHERE子句中所有全角单引号替换为半角单引号即可,修正后的可执行SQL如下:
SELECT title, last_name FROM book_info NATURAL JOIN book_author NATURAL JOIN author WHERE book_info.title = 'Uncle Samsonite' AND author.last_name = 'Shakespeare';
补充验证:你移除WHERE子句后语句可正常运行,恰好说明NATURAL JOIN的关联逻辑本身没有问题,错误仅出在WHERE条件里的非法符号上。
内容的提问来源于stack exchange,提问作者user1
相关产品推荐
相关产品推荐

