指尖1993
2016-12-12 02:06
采纳率: 46.7%
浏览 8.2k

关于left join 后distinct去重的问题

是这样的 ,因为两表之间是一对多的关系,我在用一个查询条件查询的时候,会查出来多条数据,
但是我想要通过一个字段去重,就是那个字段重复的全部去掉,代码如下:

select   distinct myt.task_seq ,
            mytr.actual_start_date,mytr.actual_end_date,mytr.status         
                    from    
                    mss_yearend_task myt left join 
                    mss_yearend_task_result mytr 
                    on 
                    (myt.task_seq=mytr.task_seq) 
                    where 1=1

我现在想通过myt.task_seq 这个字段去重,应该如何完成呢?现在这个sql 直接报错了。

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • 指尖1993 2016-12-12 02:39
    已采纳

    ok 这个已经知道了 是

    select myt.*,mytr.status from mss_yearend_task myt left join(
    Select * from
    (
    select a.*,row_number() over(order by task_seq) r
    from mss_yearend_task_result a
    ) where r = 1 ) mytr
    on myt.task_seq = mytr.task_seq

    where 1=1

    这样写的

    点赞 打赏 评论
  • ShaneJhu 2018-05-07 05:59

    你这样不对,要在over行号时增加partition才行,否则右表中只有一条数据:

     select myt.*,mytr.status from mss_yearend_task myt left join(
    Select * from 
    (
    select a.*,row_number() over(**partition by task_seq** order by task_seq) r
    from mss_yearend_task_result a
    ) where r = 1 ) mytr
    on myt.task_seq = mytr.task_seq
    
    where 1=1
    
    点赞 打赏 评论

相关推荐 更多相似问题