多表JOIN报错:'Service.name'字段不存在的问题求助
问题分析与解决
你遇到的错误根源是SQL语句中的分号位置错误,导致查询被意外分割成了两个独立部分:
在你的第二个查询里,LEFT JOIN User ON User.id = Visit.userId;这一行末尾的分号,会让数据库判定这条JOIN已经是完整查询的结束,后面的LEFT JOIN Service ON Service.id = Visit.serviceId就变成了一个无主表的独立查询——这个查询没有关联Service表的有效上下文,自然找不到Service.name等字段。
修正后的SQL语句
去掉分号,让两个LEFT JOIN属于同一个完整查询即可:
SELECT User.id AS userId, User.dateOfBirth, User.email, Visit.id AS visitId, Visit.serviceId, Visit.currentFillCount, Visit.active, Service.name, Service.category, Service.type FROM Visit LEFT JOIN User ON User.id = Visit.userId LEFT JOIN Service ON Service.id = Visit.serviceId LIMIT 1000;
逻辑验证
第一个查询能正常运行,是因为它的JOIN语句没有被分号截断,Service表和Visit表的关联逻辑完整,数据库可以识别到Service表的字段;而第二个查询的分号破坏了语句结构,直接导致后续的Service关联失效。
内容的提问来源于stack exchange,提问作者George Torres
相关产品推荐
相关产品推荐

