oracle两张表数据匹配,Oracle-left join两表关联只取B表匹配到的第一条记录
背景:
A表、B表兩表關聯,關聯出來的結果里B表有不止一條,需求是只要B表結果中的某一條(按某字段排序)
經過百度,發現?row_number() over(partition by a order by b desc)函數可用(需要說明下,order by 必須有缺少會報錯),以下是數據環境及結果。
創建數據環境
create table A(ANAME varchar(20));
insert into A values('alan');
insert into A values('Alee');
insert into A values('aspn');
create table B
(
BNo varchar(10),
BTell varchar(20),
Name varchar(20)
);
insert into B values('NO1','1366666','alan');
insert into B values('NO1','1388888','alan');
insert into B values('NO1','1399999','alan');
insert into B values('NO2','1333333','Alee');
insert into B values('NO3','1311111','aspn');
insert into B values('NO3','1322222','aspn');
直接關聯查詢的話,結果如下
需求是只要每個人的第一條記錄(按BTELL排序)
select *
from a
left join (select *
from (select b. *,
(row_number()
over(partition by bno order by BTell desc)) px
from b) e
where px = 1) t
on a.aname = t.name;
查詢結果如下
總結
以上是生活随笔為你收集整理的oracle两张表数据匹配,Oracle-left join两表关联只取B表匹配到的第一条记录的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 分布式存储 HDFS原理
- 下一篇: 华为云桌面云中心调试步骤_轻松进行云维护