一、限制去重
1、distinct
整行去重
distinct your_column,....
问题
:当连接log表,需要统计的主键可能重复 (其他列可以相同,只要有一列不同,就会统计)。
2、group by
当前字段全部去重
group by ( your_column),.....
注意:多个字段,会将其整体为一个条件,单个主键可能重复。
问题
单条件分组时候,主键重复处理的数据,只取第一条,数据不完整
补充
当前字段,条件去重。只显示满足数据:
group by ( your_column) having ( your_column(1))= rule
二、外连接表去重(根源解决)
1、子查询获取目标数据
将log表中需要的数据去重,再连接,从根源解决,主键重复处理,重复记录问题
案例
-- 连接log表
left join (selectdistinct cbsl.busi_sheet_no ,cbsl.last_proc_act_name
fromcsp_busi_sheet_log cbsl
wherecbsl.last_proc_act_name = '分公司处理'
<timeRange1> and cbsl.proc_time >=${timeRange1}</timeRange1>
<timeRange2> and cbsl.proc_time <=${timeRange2}</timeRange2>)as cbsl on cbs.busi_sheet_no=cbsl.busi_sheet_no
问题
查询速度慢,限制时间等条件,可以适当优化。