📜  mysql 删除重复项 - SQL (1)

📅  最后修改于: 2023-12-03 15:17:47.582000             🧑  作者: Mango

MySQL 删除重复项 - SQL

在关系型数据库中,经常会出现重复数据的情况。这不仅浪费了存储空间,而且可能会导致查询结果不准确。在 MySQL 中,可以使用 SQL 语句来删除重复项。

方法一:使用 DISTINCT 关键字

可以使用 SELECT DISTINCT 语句来查询去重后的数据,然后使用 INSERT INTO ... SELECT 语句来将去重后的数据插入到一个新表中,最后删除原表并重命名新表。

-- 创建一个新表
CREATE TABLE new_table (
  column1 datatype,
  column2 datatype,
  ...
);

-- 在新表中插入去重后的数据
INSERT INTO new_table (column1, column2, ...)
SELECT DISTINCT column1, column2, ...
FROM original_table;

-- 删除原表
DROP TABLE original_table;

-- 重命名新表
ALTER TABLE new_table RENAME TO original_table;

这种方法的缺点是需要创建一个新表,并将数据移动到这个新表,可能会影响性能。

方法二:使用 GROUP BY 关键字

可以使用 SELECT ... GROUP BY 语句来查询去重后的数据,然后使用 DELETE ... WHERE EXISTS 语句来删除原表中的数据。

-- 删除原表中重复的数据
DELETE FROM original_table
WHERE EXISTS (
  SELECT *
  FROM original_table AS t
  WHERE original_table.column1 = t.column1
  AND original_table.column2 = t.column2
  ...
  AND original_table.id < t.id
);

-- 将 id 字段设置为主键
ALTER TABLE original_table ADD PRIMARY KEY (id);

这种方法不需要创建新表,但可能需要对表结构进行修改。

以上两种方法均可以有效地删除重复项,具体可以根据实际情况选择不同的方法。