Customer表自连接查询异常:无法获取正确关联CompanyName的解决建议
问题分析与解决方案
问题根源
你的查询存在两个关键错误:
- 子查询的关联逻辑写反了:原语句里用
ChainCode = No_,但实际需要匹配子查询表的No字段等于主查询表的ChainCode字段 - 字符串常量未加单引号:
CD01是字符串类型值,直接写在WHERE条件里会被数据库识别为字段名,而非目标常量
正确查询语句
方式一:关联子查询
SELECT No, Name, ChainCode, (SELECT Name FROM Customer c2 WHERE c2.No = c1.ChainCode) AS CompanyName FROM Customer c1 WHERE No = 'CD01'
方式二:LEFT JOIN(可读性更强)
SELECT c1.No, c1.Name, c1.ChainCode, c2.Name AS CompanyName FROM Customer c1 LEFT JOIN Customer c2 ON c2.No = c1.ChainCode WHERE c1.No = 'CD01'
效果说明
执行上述任一语句后,CompanyName字段会正确返回MAIN-TOYOTA,因为主查询中CD01的ChainCode值CD02,会关联到Customer表中No为CD02的记录的Name字段。
内容的提问来源于stack exchange,提问作者Tum Somboun
相关产品推荐
相关产品推荐

