如何在Oracle中编写SELECT子查询关联交易与参照表展示关联信息
Oracle关联交易表与参照表的子查询实现方案
我来帮你搞定这个Oracle查询需求!先把两张表的结构和示例数据理清楚,方便我们编写语句:
表结构与示例数据
Transaction(交易表)
ID | Agency ID | Advertiser ID | Code 1 | 123 | 440 | samplecode
Reference(参照表)
ID | LongName | Type 123 | Agency1 | Agency 440 | Advertiser1 | Advertiser
实现查询语句
根据你的需求,我们可以用关联子查询来分别匹配交易表中Agency ID和Advertiser ID对应的参照表数据,SQL语句如下:
SELECT t.ID, t."Agency ID", -- 获取Agency对应的LongName和Type (SELECT r.LongName FROM Reference r WHERE r.ID = t."Agency ID") AS "LongName", (SELECT r.Type FROM Reference r WHERE r.ID = t."Agency ID") AS "Type", t."Advertiser ID", -- 获取Advertiser对应的LongName和Type (SELECT r.LongName FROM Reference r WHERE r.ID = t."Advertiser ID") AS "LongName", (SELECT r.Type FROM Reference r WHERE r.ID = t."Advertiser ID") AS "Type", t.Code FROM Transaction t;
语句说明
- 这里的关联子查询会逐行匹配交易表的
Agency ID和Advertiser ID,从参照表中拉取对应的LongName和Type; - 因为输出需要重复的列名(两个
LongName、两个Type),所以用双引号包裹列名来保留原名称(如果是实际业务场景,建议给列加区分别名,比如Agency_LongName,避免混淆); - 如果交易表中存在参照表没有匹配的ID,子查询会返回
NULL,你可以根据需求用NVL()函数处理空值。
查询结果示例
执行上述语句后,会得到你需要的输出格式:
ID | Agency ID | LongName | Type | Advertiser ID | LongName | Type | Code 1 | 123 | Agency1 | Agency | 440 | Advertiser1 | Advertiser | samplecode
内容的提问来源于stack exchange,提问作者Joseph
相关产品推荐
相关产品推荐

