当前位置:   article > 正文

left join 时从右表的多条数据中取1条_left join 取第一条

left join 取第一条

应用场景

使用left join时,左表为主要表格,从右表中获取一列数据作为辅助注释,然而右表中存在多条,如何取其中1条作为想要的数据。

代码

错误情况:

select l.*,r.辅助注释 from left_table  l left join right_table  r on l.关联列名 = r.关联列名
  • 1

该中情况中由于右表right_table存在重复数据,故导致结果重复。

正确情况,应先对右表中数据进行筛选:

select 关联列,辅助注释列,row_number() over (partition by 关联列 order by 日期 desc) as rownum from 右表
  • 1

相当于将右表中的数据,按照“关联列”分组,按照“日期”排序,然后新增了一列“rownum”,数值为每一个分组中的序号1,2,3等。

关联列辅助注释列rownum
aaa孙悟空111
aaa孙悟空22222
aaa孙悟空333
bbb唐僧1
bbb假唐僧2

最终代码:

select l.*,r.辅助注释 from left_table  l left join 
(select * from 
  (select 辅助注释列,关联列,row_number() over (partition by 关联列 order by 日期 desc) as rownum from 右表)
   where rownum = 1 )  r 
on l.关联列名 = r.关联列名
  • 1
  • 2
  • 3
  • 4
  • 5

取最新日期的辅助注释列内容,作为左表的补充。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/木道寻08/article/detail/994480
推荐阅读
相关标签
  

闽ICP备14008679号