MySQL 删除数据库中重复数据方法小结
在实际开发过程中,经常会遇到需要删除数据库中的重复数据的情况。本文将介绍如何使用MySQL来删除数据库中重复的数据。
方法一:使用DISTINCT
DISTINCT关键字可以用于返回唯一不同的值,我们可以使用它来找出重复的数据,并将它们删除掉。
DELETE FROM table_name
WHERE column_name NOT IN (
SELECT MAX(column_name)
FROM table_name
GROUP BY column_name
)
以上语句的含义是:找到表中所有的重复数据,除了那些唯一的最大值,将其他行全部删除。
下面是一个具体的示例:
-- 创建测试数据表
CREATE TABLE test_table (
id INT PRIMARY KEY,
name VARCHAR(30)
);
-- 插入测试数据
INSERT INTO test_table(id, name)
VALUES(1, 'John'),
(2, 'Jane'),
(3, 'Jack'),
(4, 'John');
-- 执行删除重复数据操作
DELETE FROM test_table
WHERE id NOT IN (
SELECT MAX(id) FROM test_table
GROUP BY name
);
-- 查看删除后的数据
SELECT * FROM test_table;
执行以上示例代码后,我们会发现表中仅剩下3行数据,重复数据被成功删除。
方法二:使用临时表
第二种方法是创建一个临时表,将重复数据的ID存入临时表中,然后再根据临时表中的ID来删除重复数据。
CREATE TEMPORARY TABLE temp_table AS (
SELECT column_name, COUNT(*) as ct
FROM table_name
GROUP BY column_name
HAVING ct > 1
);
DELETE FROM table_name
WHERE column_name IN (
SELECT column_name FROM temp_table
);
以上语句的含义是:创建一个临时表temp_table,将表中重复数据的ID存入其中;然后根据临时表中的ID,删除表中的重复数据。
下面是一个具体的示例:
-- 创建测试数据表
CREATE TABLE test_table (
id INT PRIMARY KEY,
name VARCHAR(30)
);
-- 插入测试数据
INSERT INTO test_table(id, name)
VALUES(1, 'John'),
(2, 'Jane'),
(3, 'Jack'),
(4, 'John');
-- 使用临时表删除重复数据
CREATE TEMPORARY TABLE temp_table AS (
SELECT name, COUNT(*) as ct
FROM test_table
GROUP BY name
HAVING ct > 1
);
DELETE FROM test_table
WHERE name IN (
SELECT name FROM temp_table
);
-- 查看删除后的数据
SELECT * FROM test_table;
执行以上示例代码后,我们会发现表中仅剩下3行数据,重复数据被成功删除。
综上所述,以上两种方法都可以成功删除数据库中的重复数据,使用哪种方法取决于具体情况。以上,就是 MySQL 删除数据库中重复数据方法小结的完整攻略。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:MySQL 删除数据库中重复数据方法小结 - Python技术站