MySQL查询及删除重复记录的方法
查询及删除重复记录的方法
(一)
1、查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断
select * from people
where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1)
2、删除表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断,只留有一个记录
delete from people
where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1)
and min(id) not in (select id from people group by peopleId having count(peopleId )>1)
3、查找表中多余的重复记录(多个字段)
select * from vitae a
where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)
4、删除表中多余的重复记录(多个字段),只留有rowid最小的记录
delete from vitae a
where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)
and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1)
5、查找表中多余的重复记录(多个字段),不包含rowid最小的记录
select * from vitae a
where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)
and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1)
(二)
比方说
在A表中存在一个字段“name”,
而且不同记录之间的“name”值有可能会相同,
现在就是需要查询出在该表中的各记录之间,“name”值存在重复的项;
Select Name,Count(*) From A Group By Name Having Count(*) > 1
如果还查性别也相同大则如下:
Select Name,sex,Count(*) From A Group By Name,sex 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
相关文章
- mac下完全卸载mysql的方法
- mysql 8.0.17 安装配置方法图文教程
- mysql---union的使用方法
- 3种PHP连接MYSQL数据库的常用方法
- 以docker的方式部署mysql数据库的方法
- 【MySQL高级】MySql中常用工具及Mysql 日志
- mysql timestamp类型字段的CURRENT_TIMESTAMP与ON UPDATE CURRENT_TIMESTAMP属性
- 实战演练 | MySQL PROCESSLIST 表和 Navicat Monitor 识别慢速查询的简单方法
- 【MySQL】恢复误操作的方法
- MySQL批量修改指定库的所有表的字符集 & collation
- Navicat for MySQL每次打开数据库时,总是弹出“取得ER图表信息”框的解决方法
- MySQL中给自定义的字段查询结果添加排名的方法
- mysql出现“ You can't specify target table '表名' for update in FROM clause”解决方法
- mysql 基本语句
- 【mysql】执行use databases很慢或者卡了
- .NET连接MySql数据库的方法及示例
- MySQL事务控制语句(学习笔记)
- MySQL出现Waiting for table metadata lock的原因以及解决方法
- 老叶观点:MySQL开发规范之我见(更新版)
- 《PHP、MySQL和Apache入门经典(第5版)》一一1.2 Linux/UNIX下的安装
- 转 Python 访问数据库(SQLite、MySQL、SQLAlchemy)
- mysql常用命令
- mysql不支持emoji表情的问题的解决方法
- 正确使用MySQL JDBC setFetchSize()方法解决JDBC处理大结果集 java.lang.OutOfMemoryError: Java heap space
- CentOS 7 重装mysql编译过程报错解决方法
- MySQL时间盲注五种延时方法
- MySQL统计库下面每个表的数据
- mysql如何查看错误代码具体释义?(基于perror)
- 【MySQL】实验一 数据定义
- 【MySQL】练习四 数据库安全性
- mysql-数据库的主从同步,实现读写分离
- 通过Django Models建立各种方式的索引,以及MySql什么样的查询在不同的数据量情况下会不会走索引