单表两个字段关联同一张查找表的SQL JOIN报错问题
SQL多字段关联同一张查找表报错解决方案
错误原因
你编写的SQL报错核心是多次关联同一张表设置别名后,关联条件错误使用原表名而非对应别名:
当你给LU_PARKING表声明了dayparking、nightparking两个别名之后,当前查询上下文里不再识别LU_PARKING这个原表名,必须用对应的别名来指定关联的是哪一个表实例的字段。
修正方案
1. 修正关联条件
把JOIN语句中ON条件里的原表名LU_PARKING替换为对应的别名即可解决基础报错。
2. 优化字段查询逻辑
不建议使用SELECT *拉取全部字段,两张别名相同的LU_PARKING表字段名完全一致,直接查询会出现字段重名冲突,需要显式指定字段并给重复的描述类字段添加别名区分。
正确代码示例
SELECT NNVehicleQuote.*, -- 替换parking_desc为你LU_PARKING表中实际存储描述的字段名 dayparking.parking_desc AS day_parking_desc, nightparking.parking_desc AS night_parking_desc FROM NNVehicleQuote INNER JOIN LU_PARKING AS dayparking ON dayparking.id = NNVehicleQuote.dayparking INNER JOIN LU_PARKING AS nightparking ON nightparking.id = NNVehicleQuote.nightparking
可选优化
如果存在车辆未填写日间/夜间停车ID的场景,不想因关联过滤掉这类数据,可以把INNER JOIN替换为LEFT JOIN,关联不到的停车描述会返回NULL,原车辆数据会完整保留。
内容的提问来源于stack exchange,提问作者geofftem
相关产品推荐
相关产品推荐

