-- 查询表中某一列的重复数据示例代码
-- 假设有一个名为 'users' 的表,其中有一列 'email',我们想找出所有重复的 email 地址。
-- 1. 查找所有重复的 email 及其出现次数
SELECT email, COUNT(*) AS count
FROM users
GROUP BY email
HAVING count > 1;
-- 2. 查找所有包含重复 email 的记录
SELECT *
FROM users
WHERE email IN (
SELECT email
FROM users
GROUP BY email
HAVING COUNT(*) > 1
);
-- 3. 删除重复记录,只保留一条(假设以 id 最小的那条为准)
DELETE FROM users
WHERE id NOT IN (
SELECT *
FROM (
SELECT MIN(id)
FROM users
GROUP BY email
) AS tmp
);
GROUP BY
和 HAVING
子句来统计每个 email 出现的次数,并筛选出出现次数大于 1 的记录。IN
关键字来获取这些 email 对应的所有记录。id
,然后删除那些 id
不在这个子查询结果中的记录。注意这里使用了嵌套的子查询,因为 MySQL 不允许直接在 DELETE
语句中引用同一个表。上一篇:mysql字符替换
下一篇:mysql 字段包含
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站