`
superxielei
  • 浏览: 267169 次
  • 性别: Icon_minigender_1
  • 来自: 沈阳
社区版块
存档分类
最新评论

mysql重复记录操作

    博客分类:
  • sql
阅读更多

1、查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断
select * from people
where peopleId in (select   peopleId  from   people  group  by   peopleId  having  count(peopleId) > 1)

2、删除表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断,只留有rowid最小的记录
delete from people 
where peopleId  in (select   peopleId  from people  group  by   peopleId   having  count(peopleId) > 1)
and rowid not in (select min(rowid) 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

  方法二

  有两个意义上的重复记录,一是完全重复的记录,也即所有字段均重复的记录,二是部分关键字段重复的记录,比如Name字段重复,而其他字段不一定重复或都重复可以忽略。

  1、对于第一种重复,比较容易解决,使用
select distinct * from tableName

  就可以得到无重复记录的结果集。

  如果该表需要删除重复的记录(重复记录保留1条),可以按以下方法删除
select distinct * into #Tmp from tableName
drop table tableName
select * into tableName from #Tmp
drop table #Tmp

  发生这种重复的原因是表设计不周产生的,增加唯一索引列即可解决。

  2、这类重复问题通常要求保留重复记录中的第一条记录,操作方法如下

  假设有重复的字段为Name,Address,要求得到这两个字段唯一的结果集
select identity(int,1,1) as autoID, * into #Tmp from tableName
select min(autoID) as autoID into #Tmp2 from #Tmp group by Name,autoID
select * from #Tmp where autoID in(select autoID from #tmp2)

  最后一个select即得到了Name,Address不重复的结果集(但多了一个autoID字段,实际写时可以写在select子句中省去此列)

(四)查询重复
select * from tablename where id in (
select id from tablename 
group by id 
having count(id) > 1

分享到:
评论

相关推荐

    MySQL删除重复记录

    在MySQL中,重复记录可能由于各种原因而出现,比如数据导入错误、系统故障或人为操作失误等。这些重复记录不仅浪费存储空间,还可能导致查询结果不准确,因此及时删除它们是非常必要的。 #### 方法一:使用唯一键...

    删除数据表中重复记录

    本文将详细介绍如何在不同的数据库系统(如MySQL、SQL Server、Oracle等)中删除重复记录。 #### SQL删除重复记录的基本思路 删除重复记录的核心思想是先识别出哪些记录是重复的,然后通过某种方式将这些重复记录...

    MySQL 查询重复内容只显示一条

    前者创建了一个新的不含重复记录的表,后者则删除了所有非最小`id`的重复记录。 5. **源码与工具**:标签中的“源码”可能指的是用于实现上述查询的SQL语句,而“工具”可能是指使用MySQL客户端或其他数据库管理...

    通过存储过程删除Mysql数据库表中的重复记录.pdf

    在MySQL数据库中,存储过程是一种预编译的SQL语句集合,可以用于执行复杂的数据库操作,如删除重复记录。在给定的存储过程`DelDuplicateRecord`中,它旨在删除具有相同标题的记录,但仅保留每个标题下最早的一条记录...

    MySQL数据库主键重复原因分析及处理.pdf

    MySQL数据库主键重复原因分析及处理.pdf MySQL数据库主键是数据库管理系统中的一种重要概念,它是指在关系型数据库中,每个表的唯一标识符,用于唯一地标识表中的每一条记录。主键是数据库设计的核心概念,关系型...

    mysql数据查询操作-实验训练2.docx

    * 了解如何使用 DISTINCT 关键字去重复记录 2. 多条件查询: * 了解如何使用 AND 和 OR 运算符指定多个查询条件 * 了解如何使用 IN 运算符指定多个值 * 了解如何使用 BETWEEN 运算符指定范围查询 3. 聚合函数查询...

    mysql图形界面操作系统

    3. **数据操作**:允许用户直接在界面上插入、更新、删除数据记录,以及批量导入导出数据。 4. **查询功能**:提供简单和高级查询模式,支持用户自定义查询语句,并能保存常用查询以便重复使用。 5. **安全性控制**...

    Delphi自动删除数据库中重复记录..rar

    在使用 Delphi 进行数据库开发时,有时我们需要处理数据集中存在的重复记录问题。这个压缩包文件"Delphi自动删除数据库中重复...在处理重复记录时,一定要谨慎操作,避免误删重要数据,建议先备份数据再执行删除操作。

    常见的MySQL操作

    主键(`primary key`)用于唯一标识表中的每一条记录,不允许重复,且通常由数据库自动管理: ```sql create table 表名 ( 字段名1 字段类型(长度) 约束, 字段名2 字段类型(长度), ... primary key (字段名1, ...

    asp.net 的mysql数据库操作类

    这个MySQLHelper类可以帮助开发者快速地集成MySQL数据库到ASP.NET应用中,减少重复的数据库连接和关闭代码,提高代码的可读性和可维护性。同时,为了提高安全性,建议使用参数化查询,避免SQL注入攻击。 在实际项目...

    mysql删除重复记录语句的方法

    总结来说,删除MySQL中的重复记录主要依赖于对数据分组(GROUP BY)和聚合函数(COUNT)的运用,以及理解如何通过`JOIN`和`NOT IN`等操作来保留特定的记录。在实际操作时,应根据数据规模和业务需求选择合适的方法,...

    MySQL实现创建存储过程并循环添加记录的方法

    总结一下,MySQL中的存储过程是执行重复任务和复杂逻辑的强大工具。通过创建存储过程并结合循环结构,可以实现批量添加记录的功能。理解并熟练掌握这一技术,对于数据库管理和开发工作来说是非常有价值的。

    mysql 数据表中查找重复记录

    在MySQL数据库管理中,有时我们需要找出数据表中的重复记录,以确保数据的准确性和一致性。在给定的标题和描述中,我们关注的核心知识点是如何使用SQL查询语句来定位并检索这些重复的数据。这里,我们将深入探讨这个...

    MySQL开发与操作规范

    ### MySQL开发与操作规范知识点详解 #### 一、目的与适用范围 - **规范化与标准化MySQL操作**:本文档旨在规范MySQL的开发与操作流程,确保数据库的安全性、可靠性和可维护性。 - **适用人群**:适用于MySQL数据库...

    MySQL 查询某个字段不重复的所有记录

    除了上述问题,MySQL还提供了其他方法来处理不重复记录,如`GROUP BY`结合`HAVING`子句,但这通常用于计算聚合函数,如计数或求和。在本场景中,结合`JOIN`操作可能是更为直接和有效的解决方案。 在实际数据库管理...

    php版mysql操作类

    这个"mysql.class.php"文件中的类可能会包含以上这些功能,通过实例化此类并调用其方法,开发者可以更便捷地进行数据库操作,无需每次写重复的连接、查询、关闭连接的代码。这对于提升开发效率和代码质量非常有帮助...

    MySQL中查询、删除重复记录的方法大全

    本文将详细介绍如何在MySQL中查询和删除重复记录。 首先,我们要理解如何查询重复记录。假设我们有一个名为`user_table`的表格,其中可能存在重复的`title`字段。查询所有重复标题的记录可以使用以下SQL语句: ```...

    C# MySQL 数据库操作类 (包含MySql.Data.Dll文件) 常用方法二三十多个

    `DbHelperMySQL.cs`文件中定义的数据库操作类(通常命名为`DbHelperMySQL`)是封装了数据库操作的工具类,它的主要任务是简化数据库操作,减少代码重复,提高开发效率。以下是一些可能包含在这个类中的常用方法: 1...

    MySQL操作手册v1.0.pdf

    手册进一步介绍了行操作,包括行的查询方法,如全列查询、消除重复记录、使用算术操作符、空值判断、比较运算符和逻辑运算符,以及结果的排序。在查询部分,还涵盖了索引的介绍和操作、分页查询、不同类型的函数以及...

Global site tag (gtag.js) - Google Analytics