教程集 www.jiaochengji.com
教程集 >  数据库  >  mysql  >  正文 MySQL查询重复记录sql语句

MySQL查询重复记录sql语句

发布时间:2023-05-02   编辑:jiaochengji.com
教程集为您提供MySQL查询重复记录sql语句等资源,欢迎您收藏本站,我们将为您提供最新的MySQL查询重复记录sql语句资源
在数据开发时我们常常会需要把数据库中重复的记录查出来或直接删除数据库中重复记录,下面我来给大家总结一些方法,有需要的朋友可参考。

常用的语句

1、查找表中多余的重复记录,重复记录是根据单个字段(mail_id)来判断

 代码如下 复制代码

 SELECT * FROM table WHERE mail_id IN (SELECT mail_id FROM table GROUP BY mail_id HAVING COUNT(mail_id) > 1);

2、删除表中多余的重复记录,重复记录是根据单个字段(mail_id)来判断,只留有rowid最小的记录

 代码如下 复制代码

DELETE FROM table WHERE mail_id IN (SELECT mail_id FROM table GROUP BY mail_id HAVING COUNT(mail_id) > 1) AND rowid NOT IN (SELECT MIN(rowid) FROM table GROUP BY mail_id HAVING COUNT(mail_id )>1);

3、查找表中多余的重复记录(多个字段)

 代码如下 复制代码

SELECT * FROM table WHERE (mail_id,phone) IN (SELECT mail_id,phone FROM table GROUP BY mail_id,phone HAVING COUNT(*) > 1);

4、删除表中多余的重复记录(多个字段),只留有rowid最小的记录

 代码如下 复制代码

 DELETE FROM table WHERE (mail_id,phone) IN (SELECT mail_id,phone FROM table GROUP BY mail_id,phone HAVING COUNT(*) > 1) AND rowid NOT IN (SELECT MIN(rowid) FROM table GROUP BY mail_id,phone HAVING COUNT(*)>1);

5、查找表中多余的重复记录(多个字段),不包含rowid最小的记录

 代码如下 复制代码

SELECT * FROM table WHERE (a.mail_id,a.phone) IN (SELECT mail_id,phone FROM table GROUP BY mail_id,phone HAVING COUNT(*) > 1) AND rowid NOT IN (SELECT MIN(rowid) FROM table GROUP BY mail_id,phone HAVING COUNT(*)>1);

存储过程

 代码如下 复制代码

declare @max integer,@id integer

declare cur_rows cursor local for select 主字段,count(*) from 表名 group by 主字段 having count(*) >; 1

open cur_rows

fetch cur_rows into @id,@max

while @@fetch_status=0

begin

select @max = @max -1

set rowcount @max

delete from 表名 where 主字段 = @id

fetch cur_rows into @id,@max

end

close cur_rows

set rowcount 0

您可能感兴趣的文章:
mysql删除重复记录的sql语句与查询重复记录
查询及删除重复记录的SQL语句
SQL语句去掉重复记录及获取重复记录的方法
mysql中记录SQL执行语句的方法
mysql优化之如何定位效率较低的SQL
mysql慢查询开启与配置
mysql开启慢查询以检查查询慢的语句
学习mysql的查询缓存
mysql多表联合查询并返回一张表的内容的sql代码
有关 mysql 慢查询日志

[关闭]
~ ~