SELECT *,concat('update data_security_info set del_flag=1 where id = ''',id,''';')
FROM data_security_info WHERE source = '360安全客' and del_flag = 0
and url in (SELECT url FROM data_security_info GROUP BY url HAVING COUNT(1)>1)
and id not in (SELECT MAX(id) FROM data_security_info GROUP BY url HAVING COUNT(1)>1)
url 為判重依據,保留最大id其他的資料狀態改為刪除狀態。
concat()函式,為字串拼接函式
從外到內分析sql 第一層四個條件界定,第一個是source渠道,第二個是未刪除狀態,第三個是依據url判重,第四個是除去id號最大的資料
第三個依據url判重:按照url劃分組group by url 判斷如果count>1則表示此url重複,抽取url
第四個除去max id 依據按照url判重,然後獲取到所有重複url的最大id號,然後not in這些最大id集合。
最後一步,執行concat的所有sql實現資料去重
2、保留最小id的資料
SELECT *,CONCAT('delete from distinct_table where id =',id,';') FROM distinct_table
WHERE id not in (select min(id) FROM distinct_table GROUP BY s_name,kechen,fenshu)