MYSQL系列-查重复数据

目录

前言

处理流程

一.确定主键

二.构建查询语句

2.1 处理逻辑

2.2 代码示例

2.3 分析和处理


前言

处理业务数据的时候,总会面临处理业务数据的情况。往往不确定业务主键是否准确的时候,这时候要保持谨慎态度,先按照业务主键去找出重复数据,确认了数据是重复的,这时候再进行删除等操作。

处理流程

一.确定主键

业务主键(自然主键):在数据库表中把具有业务逻辑含义的字段作为主键,称为“自然主键(Natural Key)”。

逻辑主键(代理主键):在数据库表中采用一个与当前表中逻辑信息无关的字段作为其主键,称为“代理主键”。

复合主键(联合主键):通过两个或者多个字段的组合作为主键。

二.构建查询语句

2.1 处理逻辑

按照业务主键对数据进行分组, 若数据有多条,取id较小的那个进行查询.

2.2 代码示例

SELECT * FROM {tb} # 表名

    WHERE id in (
            SELECT
                min(id) # 取较小的id
            FROM
                {tb}     # 表名
            GROUP BY
                primarys # 主键
            HAVING
                count(id) > 1
        )

2.3 分析和处理

查看完重复数据后,才好确定处理的方案:

2.3.1 业务主键不合理

通过业务去重的方式查询到的重复数据,实际不完全相同时,可以判断出,数据要么丢失了部分信息,要么业务主键设计不完善。这时候,需要进一步去完善业务主键.

2.3.2 确定业务主键重复的数据

移除干扰信息或无关信息后,剩下的信息存在业务上的重复,这时候可以执行删除的方案。

这时候拿着重复数据的id直接去删除,无疑,效率最高且准确.

你可能感兴趣的:(数据处理,mysql,数据库,database)