You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle SQL关联locations、countries表查询同国街道出现重复结果如何解决

问题原因

你当前的自连接逻辑仅限制了两个街道地址不相等,没有限制配对的顺序,因此每一组同国家的不同街道都会生成正反两条对称的重复记录。

解决方法

将自连接的不等条件从A.STREET_ADDRESS <> B.STREET_ADDRESS调整为大小比较的单向条件,即可保证每组配对仅出现一次。另外推荐将隐式的逗号表连接改为显式JOIN写法,逻辑更清晰易读。

修正后的查询语句如下:

SELECT A.STREET_ADDRESS AS "CALLE A", C.COUNTRY_NAME, B.STREET_ADDRESS AS "CALLE B"
FROM HR.LOCATIONS A 
JOIN HR.LOCATIONS B ON A.COUNTRY_ID = B.COUNTRY_ID AND A.LOCATION_ID < B.LOCATION_ID
JOIN HR.COUNTRIES C ON A.COUNTRY_ID = C.COUNTRY_ID
ORDER BY C.COUNTRY_NAME

注:这里使用LOCATION_ID(locations表的主键)做大小比较比直接比较街道地址更严谨,可避免不同地点出现同名字段时的逻辑错误。如果确认不会有重名街道,也可以替换为A.STREET_ADDRESS < B.STREET_ADDRESS,效果一致。

原查询中使用的DISTINCT也可以去掉,因为单向大小比较已经保证了不会有重复配对,也不会出现同条记录自连接的情况。

内容的提问来源于stack exchange,提问作者PerCT

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 17:57:02