参考资料

  1. MySQL 临时表详细说明以及案例
  2. MySQL ORDER BY(排序) 语句详细说明以及案例
  3. MySQL 函数详细说明以及案例
  4. MySQL 处理重复数据详细说明以及案例
  5. MySQL GROUP BY 语句详细说明以及案例
  6. MySQL 正则表达式详细说明以及案例
  7. MySQL WHERE 子句详细说明以及案例
  8. MySQL 插入数据详细说明以及案例

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 中的重复数据问题。