SQL重复记录如何查询

这篇具有很好参考价值的文章主要介绍了SQL重复记录如何查询。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

sql查询重复数据,数据库,sql,sql,数学建模,数据库

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
)

转自:微点阅读   https://www.weidianyuedu.com文章来源地址https://www.toymoban.com/news/detail-797898.html

到了这里,关于SQL重复记录如何查询的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 数据库作业-sql语句查询

    建表的插入数据的表 数据库作业-sql建表和插入数据_快乐的xiao何的博客-CSDN博客 create table supplier( supplierno char(6) primary key, suppliername nvarchar(10), address nvarchar(20), number char(11) )create table category( categoryno char(5) primary key, categoryname varchar(20), descriptions text... https://blog.csdn.net/m0_539670

    2023年04月23日
    浏览(43)
  • 数据库SQL查询相关练习

    1、显示所有职工的基本信息。 2、查询所有职工所属部门的部门号,不显示重复的部门号。 3、求出所有职工的人数。 4、列出最高工和最低工资。 5、列出职工的平均工资和总工资。 6、创建一个只有职工号、姓名和参加工作的新表,名为工作日期表。 8、列出所有姓刘的职工

    2024年01月25日
    浏览(35)
  • 数据库 SQL高级查询语句:聚合查询,多表查询,连接查询

    创建Students和Courses表 直接查询 设置别名查询 设置条件查询 使用COUNT(*) 和 COUNT(StudentID)是一样的效果,因为StudentID是主键,每行记录的主键都不同。另外我们在聚合查询中还是能使用WHERE子句的,比如我们要 查找年龄大于20岁的学生数量 ,可使用以下SQL语句: 函数 说明 SUM

    2024年02月09日
    浏览(99)
  • 《数据库原理》实验六 SQL数据查询实验

    本系列传送门: 实验二 SQL Server SSMS工具创建和管理数据库及数据表 实验三 SQL Server SSMS工具添加数据 实验四 SQL的数据定义语句 实验五 数据库完整性约束的实现与验证 实验六 SQL数据查询实验 实验六(2) SQL数据查询—连接查询 实验七 SQL的数据更新和视图 实验八 T_SQL编程

    2024年02月03日
    浏览(83)
  • 【数据库】日常使用PL/SQL 登录ORACLE 数据库查询数据

    一、PL/SQL 登录方式 username: ##访问数据库的账号 password: ##访问数据库的密码 Databse: ##数据库IP地址/实例名 数据库集群心跳地址/实例名 Connect as : ##Normal,如果使用sysdba账户登录选择SYSDBA 二、PL/SQL使用SQL语句查询 点击上方导航栏,New,选择SQL Window,即可再次输入要查询的

    2024年02月19日
    浏览(54)
  • SQL数据库的查询操作大全(select)

    1、数据库的连接、创建 2、对字段的操作:(alter table) 3、对数据的操作(插入、修改、删除) 4、数据查询(select) 5、多表查询(join on) 6、约束操作 四、数据库查询大全(select) 1、select 字段名 from 表; 2、In查询:用于 过滤 你所需要查询的内容                

    2023年04月08日
    浏览(63)
  • WordPress必备数据库SQL查询语句整理

    最近明月给博客和主站都部署了SSL证书,彻彻底底的加入了HTTPS站点行列。这个期间也用到了SQL查询语句来批量的对内链的HTTP前缀做替换,就感觉掌握一些SQL方面的语句还是非常有必要的,这不在【俄语译客】博客上就发现了几条比较实用的,适合 WordPress 实用的SQL语句。于

    2024年02月01日
    浏览(87)
  • SQL Server数据库 -- 表的高级查询

      一、子查询 嵌套子查询 相关子查询 二、查询运算 并运算union 交运算intersect 差运算except 三、函数的使用 if语句 while语句 case语句 四、总结 高级子查询是对查询更灵活的运用,学会了高级查询将对数据库使用有很大的帮助。       在SQL语言中,一个select-from-where语句称为一

    2024年02月13日
    浏览(38)
  • SQL Server数据库 -- 表的基础查询

    一、单表查询基本结构 二、单表查询结构语法 select 聚合函数 where 模糊查询 order by group by having 三、多表查询基本结构 四、多表查询结构语法 内连接 自连接 外连接 五、总结         学习了数据库,在以后公司等地方,你可能不会用到创建数据库或者表格,但是你一定会使

    2024年02月11日
    浏览(76)
  • 数据库SQL Server实验报告 之 SQL语言进行简单查询(3/8)

    实验名称          SQL语言进行简单查询 注意:原版word在下载资源里面(免费下载) 实验目的及要求: 掌握各种查询的SQL脚本写法,包括SELECT、FROM、WHERE、GROUP BY、HAVING子句的用法,特别要求比较内连接、外连接的结果 在XSGL数据库中,使用各种查询条件完成指定的查询

    2024年02月02日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包