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

Oracle10g下通过SQL JOIN查询关联编码及对应地址的问题咨询

问题修正说明

你原SQL的逻辑核心方向正确,但存在两处需要调整的点:

  1. SELECT子句中取的b.code1是关联的Code1记录自身的Code1字段值,并非你指定编码关联的Code1值,虽然示例数据中二者值相同,但如果Code1记录的Code1字段不等于自身编码时就会返回错误结果,c.code2存在同样问题,应该直接取主表的code1、code2字段即可。
  2. 你使用的隐式内连接,当关联的Code1或Code2在表中无对应记录时,整条查询会返回空,改用左连接可以保证只要指定编码存在就会返回结果,缺失的关联地址字段返回空值。

正确SQL方案

方案1:取关联Code1、Code2对应的自身地址(符合需求描述的逻辑)

返回Code1对应自身存储的地址、Code2对应自身存储的地址:

SELECT 
  a.code1,
  b.address AS code1_address,
  a.code2,
  c.address AS code2_address
FROM address a
LEFT JOIN address b ON a.code1 = b.code
LEFT JOIN address c ON a.code2 = c.code
WHERE a.code = 'DAN001';

返回结果如下:

code1code1_addresscode2code2_address
DAN004Delhi, IndiaDAN005Ever, Belgium

如果需要地址转为全大写,可使用Oracle的UPPER()函数包裹地址字段,例如UPPER(b.address) AS code1_address。


方案2:返回你给出的预期结果

你给出的预期结果中Code1地址为指定编码自身的地址,不需要关联查询,直接查询单表即可:

SELECT 
  code1,
  address AS code1_address,
  code2,
  UPPER(address) AS code2_address
FROM address
WHERE code = 'DAN001';

返回结果和你给出的预期一致:

code1code1_addresscode2code2_address
DAN004ABC, Newyork.DAN005EVER, BELGIUM

内容的提问来源于stack exchange,提问作者sanjay singh chauhan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 21:15:08