MySQL多表别名查询时保留字加反引号无效如何解决
错误原因
你当前写法的核心问题是反引号包裹范围错误。MySQL对标识符的解析是按独立单元处理的,你写的`s.Status`会被数据库识别为一个名称为s.Status的单独字段,而不是「表别名s下的Status字段」,数据库找不到对应名称的字段自然会运行失败。
正确写法
表别名和字段名是两个独立的标识符,需要分别处理,如果Status是保留字,只需要给字段名单独包裹反引号,表别名和字段之间的点号要放在反引号外部:
select rf.id, s.`Status` as 'Status' from form rf left outer join sharerequest rr on rr.formId = rf.id left outer join schedule s on s.sharerequestid = rr.id
你之前尝试的写法问题说明
- 仅包裹
status但运行失败:优先检查你用的是不是半角反引号(键盘左上角ESC键下方的符号),不要和单引号、全角引号混淆,正确写法是s.Status``,反引号只套在Status`外面 - 用方括号包裹字段:这是SQL Server的转义语法,MySQL原生不支持该写法,常规运行环境会直接报语法错误
内容的提问来源于stack exchange,提问作者JakeHova
相关产品推荐
相关产品推荐

