MySQL 是一个关系型数据库管理系统,用于存储和管理数据。筛选重复数据是指从数据库表中找出具有相同值的行。
DISTINCT
关键字SELECT DISTINCT column1, column2, ...
FROM table_name;
示例:
SELECT DISTINCT name, email
FROM users;
GROUP BY
和 HAVING
子句SELECT column1, column2, ...
FROM table_name
GROUP BY column1, column2, ...
HAVING COUNT(*) > 1;
示例:
SELECT name, email
FROM users
GROUP BY name, email
HAVING COUNT(*) > 1;
JOIN
SELECT t1.*
FROM table_name t1
JOIN (
SELECT column1, column2, ...
FROM table_name
GROUP BY column1, column2, ...
HAVING COUNT(*) > 1
) t2
ON t1.column1 = t2.column1 AND t1.column2 = t2.column2;
示例:
SELECT t1.*
FROM users t1
JOIN (
SELECT name, email
FROM users
GROUP BY name, email
HAVING COUNT(*) > 1
) t2
ON t1.name = t2.name AND t1.email = t2.email;
DISTINCT
关键字无法去除所有重复数据?原因:DISTINCT
关键字只能去除完全重复的行,对于部分重复的行无法有效处理。
解决方法:使用 GROUP BY
和 HAVING
子句或子查询和 JOIN
方法来处理部分重复的数据。
解决方法:
DELETE t1 FROM users t1
JOIN (
SELECT name, email
FROM users
GROUP BY name, email
HAVING COUNT(*) > 1
) t2
ON t1.name = t2.name AND t1.email = t2.email
WHERE t1.id NOT IN (
SELECT MIN(id)
FROM users
GROUP BY name, email
);
希望这些信息对你有所帮助!
领取专属 10元无门槛券
手把手带您无忧上云