用distinct关键字只能过滤查询字段中所有记录相同的(记录集相同),而如果要指定一个字段却没有效果,另外distinct关键字会排序,效率很低 。

select distinct name from t1 能消除重复记录,但只能取一个字段,现在要同时取id,name这2个字段的值。

select distinct id,name from t1 可以取多个字段,但只能消除这2个字段值全部相同的记录

所以用distinct达不到想要的效果,用group by 可以解决这个问题。

例如要显示的字段为A、B、C三个,而A字段的内容不能重复可以用下面的语句:

select A, min(B),min(C),count(*) from [table] where [条件] group by A

having [条件] order by A desc

为了显示标题头好看点可以把select A, min(B),min(C),count(*) 换称select A as A, min(B) as B,min(C) as C,count(*) as 重复次数

显示出来的字段和排序字段都要包括在group by 中

但显示出来的字段包有min,max,count,avg,sum等聚合函数时可以不在group by 中

如上句的min(B),min(C),count(*)

一般条件写在where 后面

有聚合函数的条件写在having 后面

如果在上句中having加 count(*)>1 就可以查出记录A的重复次数大于1的记录

如果在上句中having加 count(*)>2 就可以查出记录A的重复次数大于2的记录

如果在上句中having加 count(*)>=1 就可以查出所有的记录,但重复的只显示一条,并且后面有显示重复的次数----这就是所需要的结果,而且语句可以通过hibernate

下面语句可以查询出那些数据是重复的:

select 字段1,字段2,count(*) from 表名 group by 字段1,字段2 having count(*) > 1

将上面的>号改为=号就可以查询出没有重复的数据了。

例如

复制代码代码如下:

select count(*) from (select gcmc,gkrq,count(*) from gczbxx_zhao t group by gcmc,gkrq having

count(*)>=1 order by GKRQ)

select * from gczbxx_zhao where viewid in ( select max(viewid) from gczbxx_zhao group by

gcmc ) order by gkrq desc ---还是这个可行

有一面试题说:distinct去重复的效率很底下,我在网上看到这遍文章的方法好像说是用 group by having 效率很高了?

我在了一个测试,有一商品表,26万条记录,只有商品编号建了索引,对品牌名称字段做 distinct

复制代码代码如下:

select brand,count(*) from tab_commbaseinfo group by brand having count(*) =1

平均时间是:0.453

复制代码代码如下:

select distinct brand from tab_commbaseinfo

平均时间是:0.39

搞不懂是否还有其它方法。

oracle sql不用distinct去除重复,oracle sql 去重复记录不用distinct如何实现相关推荐

  1. mysql 去重复屈居_mysql去重复关键字distinct的用法

    distinct的去重复的提前是表中所有列的数据完成相同时,才能把相同的数据只保留一条,并不是 distinct 列名,除去某一列相同的数据,并且 distinct要放在第一个列前面.案例如下:一个学 ...

  2. JavaScript去除文本框中重复内容 js去重复

    //数据存在于list这个输入框中,然后直接调用此函数 function process() {var list = document.getElementById('list');arr = lis ...

  3. Excel 表格查找重复数据,去重复统计

    找出表格是否有重复数据: =IF(AND(G20=G19,D20=D19),"是","否") 筛选移除[重复的数据]然后开始统计 =SUBTOTAL(9,E2: ...

  4. python数据库去重复_python string 去重复数据库

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...

  5. SQL数据去重复 Distinct 和 row_number() over()

    Distinct:查询结果中,去掉了重复的行 1.语法:      SELECT Distinct列名称 FROM 表名称;      Distinct 必须放在Select搜索字段的最前面,否则SQ ...

  6. 关系数据库SQL之高级数据查询:去重复、组合查询、连接查询、虚拟表

    前言 接上一篇关系数据库SQL之基本数据查询:子查询.分组查询.模糊查询,主要是关系型数据库基本数据查询.包括子查询.分组查询.聚合函数查询.模糊查询,本文是介绍一下关系型数据库几种高级数据查询SQL ...

  7. DISTINCT 多字段去重复

    DISTINCT  多字段去重复 DISTINCT 后面只能跟一个去重复的条件,那结果是想以一个字段去重复,查多个字段怎么办呢? SELECT id , name, sex FROM hehe GRO ...

  8. SQLserver Distinct去重复的数据

    Distinct去重复 我们在使用Server 语句查询数据库的时候有时需要查询出很多重复的值,但是我们又不希望它出现重复的数据给我们那么这个时候就可以使用Distinct关键字来去重复这个操作 如下 ...

  9. 数据去重复_字典应用实例(每行每列都要去重复值)

    我的目标:让中国的大学生走出校门的那一刻就已经具备这些office技能,让职场人士能高效使用office为其服务.支持我,也为自己加油! 前面两节课中的去重复,不论是单张表里的去重复还是多张表里的去重 ...

最新文章

  1. 利用 IHttpHandler 自定义 HTTP 处理程序
  2. python学习笔记——类
  3. .NET Core 3.0中用 Code-First 方式创建 gRPC 服务与客户端
  4. python从入门到爬虫_python爬虫从入门到放弃(一)之初识爬虫
  5. php中global什么意思,php中global和$GLOBALS[]的用法、解释、区别
  6. XTP: 从XTP看Rust与C++接口FFI通信
  7. PCB布局布线注意事项
  8. luogu4234 最小差值生成树
  9. AutoIt的录制(AU3Record)
  10. 36岁大龄程序员转岗做运营,最让我觉得有价值感的二三事!深度自问
  11. windows-sys9 :windows 系统官方下载网址
  12. code::blocks自动补全诸如socket或者其它一些库中的函数
  13. c语言输入字符串 48CT,2004年9月全国计算机等级考试二级C笔试试题含答案
  14. Unable to restart cluster, will reset it: apiserver healthz: apiserver process never appeared
  15. Java中多态的粗浅见解
  16. android台湾中文網,android台灣中文網註冊
  17. Java实验之接口与实现、内部类与异常类
  18. 思科大学计算机第一章测试题及答案,集美大学思科上机练习1
  19. xpath爬取智联招聘--大数据开发职位并保存为csv
  20. 行销e破解_Google如何让广告行销人员像我一样追踪您的孩子

热门文章

  1. Netty工作笔记0055---Unpooled应用实例1
  2. 数据库工作笔记016---SqlServer2016_日期处理_ntext和text区别_开启远程连接_查看系统COm组件_Browser服务无法启动_导出数据_字符串前加N
  3. 0x00007FFEBAD050D8 处(位于 first.exe 中)有未经处理的异常: Microsoft C++ 异常: cv::Exception,位于内存位置 0x0000000DD73CE
  4. laravel windows 下queue能长时间执行吗_后台执行超长时间任务解决方案
  5. win32开发(画笔、刷子、字体)
  6. verilog 学习记(如何编写assert)
  7. python调整屏幕缩放比例_python实现批量按比例缩放图片效果
  8. bean的作用域_Spring 框架基础(02):Bean的生命周期,作用域,装配总结
  9. 阿里开发规范_阿里开发强制要求的11条SQL编写规范
  10. android的辅助代码,跟App相关的Android辅助类