SQL去重复查询

SQL单个或分组去重复查询方法

以下是用来测试的数据:

表名:t_Demo

ID Name Project Grade
1 小明 数学 59
1 小明 语文 59
1 小明 英语 59
2 小红 数学 100
2 小红 语文 99
3 小白 数学 100
3 小白 语文 90
3 小白 英语 80
3 小白 政治 70
3 小白 历史 60
4 小黑 数学 89
4 小黑 语文 89
4 小黑 英语 90

1.单个字段去重复查询

我们现在想获取以上表格中ID字段信息表,并且去掉重复的数值,也就是说我们现在想要获取表中ID有多少。

select id from t_Demo group by id

查询结果:

ID
1
2
3
4

2.多字段去重复查询

如果需要获取ID和Name去掉重复值信息表,相当于得到现在这个表格中有多少人。

select id,Name from t_Demo group by id,Name

查询结果:

ID Name
1 小明
2 小红
3 小白
4 小黑

3.多字段去重复并且获取重复的数目

现在我们需要获取表中每个人所有成绩数目

select ID,Name,count(distinct Project) as num from t_Demo group by ID,Name

查询结果:

ID Name num
1 小明 3
2 小红 2
3 小白 5
4 小黑 3
时间: 2024-12-15 06:53:19

SQL去重复查询的相关文章

SQL学习之去重复查询

下面是一张表的数据 执行select content from dbo.Logo,返回以下结果 但是这个时候我们只需要相同的内容中的一个即可,但是查询出来的明显有很多重复的, 所以我们只需要在需要查询的字段前加上DISTINCT关键字即可,所以执行以下代码 select DISTINCT content from dbo.Logo 所有的重复记录都被去掉了. 我们在使用DISTINCT关键字的时候需要注意一点: 不能部分使用DISTINCT,因为DISTINCT作用于所有的列,不仅仅是跟在他后面

sql表连接去重复查询

查询公司与公司最新刷新的一条信息 select t1.userid,t1.id,t1.title,t1.RegType,t1.Salary,t1.SubjectID,t1.RefreshTime,t2.name,t2.logo,t2.[address],t2.CreateTime from info t1 inner join companyinfo t2 on t1.userid=t2.id where t1.id in ( select top 1 info.id from info whe

sql去重复

假设存在一个主键ID,Name为重复列,下面这句可以查出所有的没有重复的数据: select * from 表 as a where ID=(select min(ID) from 表 where Name=a.Name) . 根据上面这句就可以删除所有重复项的数据: delete from 表 where ID not in(select ID from 表 as a where ID=(select min(ID) from 表 where Name=a.Name)). 执行:select

【知识库】-数据库_MySQL之高级数据查询:去重复、组合查询、连接查询、虚拟表

简书作者:seay 文章出处: 关系数据库SQL之高级数据查询:去重复.组合查询.连接查询.虚拟表 回顾:[知识库]-数据库_MySQL之基本数据查询:子查询.分组查询.模糊查询 Learn [已经过测试校验] 一.去重复(DISTINCT) 二.组合查询 三.UNION(并集) 四.连接查询 五.虚拟表 一.去重复(DISTINCT) DISTINCT:用于返回唯一不同的值,主要是用于某一字段 语法 SELECT DISTINCT <列名>|* FROM <表名> 示例 -- 查

sql语句查询同一表内多字段同时重复的记录 sql数据库重复记录删除

分享下用sql语句删除数据库中重复记录的方法.比如现在有一人员表 (表名:peosons) 若想将姓名.身份证号.住址这三个字段完全相同的记录查询出来select p1.* from persons p1,persons p2 where p1.id<>p2.id and p1.cardid = p2.cardid and p1.pname = p2.pname and p1.address = p2.address可以实现上述效果.几个删除重复记录的SQL语句 1.用rowid方法2.用gr

SQL学习_查询重复数据和连接多个表数据的方法

进行数据库测试时需要根据不同场景查询数据,以便验证发现的问题是否为脏数据引起的.记录一下最近常用的查询方法: 1. 查询表中重复数据(id不同,多个字段值相同) select P1.* from project as P1, project as P2 where P1.id<>P2.id and P1.ProjectId=P2.ProjectId and P1.ServiceTypeId=P2.ServiceTypeId and P1.Rank=P2.Rank 2.连接多个表数据 selec

50种方法优化SQL Server数据库查询(转载)

原文地址:http://www.cnblogs.com/zhycyq/articles/2636748.html 查询速度慢的原因很多,常见如下几种: 1.没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷) 2.I/O吞吐量小,形成了瓶颈效应. 3.没有创建计算列导致查询不优化. 4.内存不足 5.网络速度慢 6.查询出的数据量过大(可以采用多次查询,其他的方法降低数据量) 7.锁或者死锁(这也是查询慢最常见的问题,是程序设计的缺陷) 8.sp_lock,sp_who,活动的用

基本sql语句--连接查询

union 联合 union的作用:把两次或多次查询结果合并起来. 典型案例:select good_id,good_name from good where shop_price>5000 or shop_price<20; select good_id,good_name from good where shop_price>5000 union select good_id,good_name from good where shop_price<20; 1.union的要求

Oracle单表去重复(二)

Oracle单表去重 去重有两层含义,一:是记录完全一样.二:是符合一定条件的认为是重复. 根据表的数量,去重可划分为:单表去重和多表关联去重. 对于去重,一般最容易想到的是用distinct,而distinct只能对记录完全重复的记录保留一条. distinct使用的是二重循环的方式来去重的,如果数据量非常大的时候,会导致性能急剧下降. 我们前一篇文章已经给出了详解,你可以去查看 Oracle单表去重复(一) 下面是一个单表去重的测试,认为name字段相同的即为重复记录,要查询出一个结果,过滤