📅  最后修改于: 2023-12-03 15:17:47.582000             🧑  作者: Mango
在关系型数据库中,经常会出现重复数据的情况。这不仅浪费了存储空间,而且可能会导致查询结果不准确。在 MySQL 中,可以使用 SQL 语句来删除重复项。
可以使用 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;
这种方法的缺点是需要创建一个新表,并将数据移动到这个新表,可能会影响性能。
可以使用 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);
这种方法不需要创建新表,但可能需要对表结构进行修改。
以上两种方法均可以有效地删除重复项,具体可以根据实际情况选择不同的方法。