工作中关于单表、多表去重的解决方案

1、单表可以直接使用distinct进行去重。

2、多表可以使用group by 进行去重(达梦数据库用group by分组必须要有select后面的字段,因此不建议此方式)

3、达梦数据库推荐用此方式去重:代码如下

select id from(

select a.*,row_number() over(partition by info_id order by SEND_DATE desc) su from info_user_work a 

where su=1 

id:是子查询中代表唯一的一个字段,可以用他做等于条件

row_number() over(partition by info_id ) :此函数是根据info_id进行分组

order by SEND_DATE desc :是进行降序排列

su:是根据分组后在此表中最后加一个su字段来进行去重

where su=1 :是做去重跟筛选的

4、group by 和order by 一起使用效果会更好,但group by要放在order by前面

5、想在where条件后写聚合函数要:group by  字段   having count(字段>1,否则不行

posted @ 2021-03-19 12:13  零点001  阅读(1082)  评论(0)    收藏  举报