sqlunion时怎么根据某个字段去重,就是某个字段里面包含的就不连接进去了,但其他字段可不一样

1639705372(1).pngsql union 时怎么根据某个字段去重,就是某个字段里面包含的就不连接进去了,但其他字段可以不一样

FineReport 123木头人1 发布于 2021-12-17 09:36 (编辑于 2021-12-17 09:43)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共4回答
最佳回答
0
北纬六十六度Lv4初级互助
发布于2021-12-17 09:51

union 之后再distinct

最佳回答
0
CD20160914Lv8专家互助
发布于2021-12-17 09:38

实际举例说明一下。用数据?没有太明白。。。

  • 123木头人1 123木头人1(提问者) 已更新
    2021-12-17 09:43 
  • CD20160914 CD20160914 回复 123木头人1(提问者) 如果你下面的字段 二二 它后面的字段2也有内容的话,你要怎么办?
    2021-12-17 10:28 
最佳回答
0
墨残烛Lv5初级互助
发布于2021-12-17 09:38(编辑于 2021-12-17 09:39)

去重用group by

比如想要去重code字段,就在最后加入group by code

  • 123木头人1 123木头人1(提问者) 已更新
    2021-12-17 09:43 
  • 墨残烛 墨残烛 回复 123木头人1(提问者) 你用union不能去重吗?union本身就是去掉重复部分后的集合
    2021-12-17 09:51 
  • 123木头人1 123木头人1(提问者) 回复 墨残烛 不能呀,是是判断一行呀,怎么判断其中某个字段
    2021-12-17 09:55 
  • 墨残烛 墨残烛 回复 123木头人1(提问者) 连接的时候加and判断,比如你不连重复字段的的原因是因为其他列为空,就把这个连接条件里面
    2021-12-17 10:03 
最佳回答
0
RFLv5初级互助
发布于2021-12-17 10:00

union之后再用row_number() over(partition by 去重字段 order by 字段1,字段2) as rk根据指定字段排序,取rk=1的就可以了

  • 123木头人1 123木头人1(提问者) 也不能这样,因为我有可能那个字段有两行数据
    2021-12-17 10:02 
  • RF RF 回复 123木头人1(提问者) 所以要用row_number() over(),然后取rk=1的,如果取到rk=1的还有重复,那就再distinct一下就好了
    2021-12-20 13:49 
  • 5关注人数
  • 442浏览人数
  • 最后回答于:2021-12-17 10:00
    请选择关闭问题的原因
    确定 取消
    返回顶部