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

如何编写Oracle查询实现两表关联输出对应项名称

问题描述

现有两张业务表:

  • Table_1:存储序号与两类项ID的对应关系,表结构及测试数据:
Sr_no  Item_1_id       Item_2_id
---------------------------------
1       3                 2 
2       2                 1
3       1                 3
  • Table_2:存储项ID与项名称的映射关系,表结构及测试数据:
Item_id    Item_Name
-------------------------
1          Key Board
2          Monitor
3          CPU

需要查询输出每条记录的序号、Item_1_id对应的项名称、Item_2_id对应的项名称,期望输出结果:

Sr_no  Item_1_Name       Item_2_Name
---------------------------------
1       CPU                 Monitor 
2       Monitor             Key Board
3       Key Board           CPU
实现SQL

核心逻辑是对Table_2做两次关联,分别匹配两个ID字段,用表别名区分两次关联的映射表,语句如下:

SELECT
  t1.Sr_no,
  t2a.Item_Name AS Item_1_Name,
  t2b.Item_Name AS Item_2_Name
FROM Table_1 t1
-- 第一次关联Table_2,匹配Item_1_id对应的名称
LEFT JOIN Table_2 t2a
  ON t1.Item_1_id = t2a.Item_id
-- 第二次关联Table_2,匹配Item_2_id对应的名称
LEFT JOIN Table_2 t2b
  ON t1.Item_2_id = t2b.Item_id
ORDER BY t1.Sr_no;

说明:如果业务上能保证Table_1中所有Item_1_id、Item_2_id都能在Table_2中找到匹配记录,可以把LEFT JOIN替换为INNER JOIN,查询效率会更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 08:51:34