工作中关于单表、多表去重的解决方案
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,否则不行

浙公网安备 33010602011771号