MySQL 处理重复数据

在 MySQL 中,处理重复数据通常涉及以下几种方法:

  1. 使用 DISTINCT 关键字

    • DISTINCT 用于从查询结果中去除重复的行。

    • 示例:

      SELECT DISTINCT column_name FROM table_name;
  2. 使用 GROUP BY 子句

    • GROUP BY 用于将相同值的行分组,通常与聚合函数(如 COUNTSUM 等)一起使用。

    • 示例:

      SELECT column_name, COUNT(*) FROM table_name GROUP BY column_name;
  3. 使用 UNIQUE 约束

    • UNIQUE 约束确保列中的所有值都是唯一的。

    • 示例:

      ALTER TABLE table_name ADD UNIQUE (column_name);
  4. 使用 PRIMARY KEY 约束

    • PRIMARY KEY 约束确保列中的所有值都是唯一的且不为空。

    • 示例:

      ALTER TABLE table_name ADD PRIMARY KEY (column_name);
  5. 使用 INSERT IGNORE

    • INSERT IGNORE 在插入数据时忽略重复键错误。

    • 示例:

      INSERT IGNORE INTO table_name (column_name) VALUES ('value');
  6. 使用 REPLACE 语句

    • REPLACE 语句在插入数据时,如果发现重复键,则删除旧记录并插入新记录。

    • 示例:

      REPLACE INTO table_name (column_name) VALUES ('value');
  7. 使用 ON DUPLICATE KEY UPDATE

    • ON DUPLICATE KEY UPDATE 在插入数据时,如果发现重复键,则更新现有记录。

    • 示例:

      INSERT INTO table_name (column_name) VALUES ('value') ON DUPLICATE KEY UPDATE column_name = 'new_value';

案例

假设有一个 students 表,结构如下:

CREATE TABLE students (
    id INT PRIMARY KEY,
    name VARCHAR(50) NOT NULL,
    email VARCHAR(100) UNIQUE
);
  1. 插入数据时忽略重复

    INSERT IGNORE INTO students (id, name, email) VALUES (1, 'Alice', 'alice@example.com');
  2. 插入数据时更新重复记录

    INSERT INTO students (id, name, email) VALUES (1, 'Alice', 'alice@example.com') ON DUPLICATE KEY UPDATE name = 'Alice', email = 'alice@example.com';
  3. 查询去重数据

    SELECT DISTINCT name FROM students;
  4. 分组统计重复数据

    SELECT name, COUNT(*) FROM students GROUP BY name;

通过这些方法,可以有效地处理 MySQL 中的重复数据问题。

本篇文章内容来源于:MySQL 处理重复数据详细说明以及案例