在这记录一个实习期间遇到的一个查重和去重的sql语句。

查重语句:(group by 查重)

SELECT user_id,

count(*) as num

FROM 表名

WHERE 条件  GROUP BY user_id HAVING count(*)>1;

sql语句关键词为大写,基本思路就是以user_id字段来进行分组排序,count(*)函数是计数,这语句结果图如下

user_id

num

xiaoming

2

xiaoyu

3

上面所展示出来的都是有user_id重复的数据,user_id为xiaoming的字段有2条重复记录,xiaoyu存在3条重复,因为如果没有重复的话count(*)也就是表中的num值应该为1。

去重语句:(row_number over()去重)

select user_id,

create_date,

row_number() over(partition by user_id order by create_date desc) as date_n

FROM 表名

WHERE date_n=1

AND 条件;

这里的去重就是利用了上述中的没有重复的count(*)为1,所以我们只需要取出1就可以了,但是问题在于,重复的字段中取出哪个去除哪个,还有就是把重复中要取出的count(*)值为1,这里我们要用到的就是排序函数,row_number() over(partition by order by)函数的具体可以自行百度,上诉实例中,总结就是按user_id分组,按create_date排序,desc这个是设置降序和升序的作用,通过row_number函数处理的大体效果:

user_id

creat_date

date_n

xiaoming

2018-05-06

1

xiaoming

2018-02-03

2

xiaoyu

2018-06-01

1

xiaoyu

2018-05-20

2

xiaoyu

2018-05-10

3

这就是达到了我们想取到1的目的。主要就是我们要清楚要根据什么来排序,这个字段意义在于通过其可以判断在同一user_id中的不同点。我们只要在where 条件中限制date_n=1即可去重。

结果图如下:

user_id

creat_date

date_n

xiaoming

2018-05-06

1

xiaoyu

2018-06-01

1

java中sql查重跟去重_sql中查重和去重相关推荐

  1. c#sql防注入模糊查询_SQL中利用LIKE实现模糊查询的功能

    大家好,今日继续讲解<VBA数据库解决方案>,今日讲解的内容是:利用ADO,实现模糊查询.在上一讲中,我们实现了利用ADO快速查找的功能,今日我们实现工作表中模糊查找的功能.我们仍是利用上 ...

  2. oracle中SQL语句ge的用法,Oracle中SQL语句的几种用法

    在诊断数据库系统性能的过程中,总会涉及到跟踪效率低下的SQL语句,Oracle数据库10g包含一种新的实用程序trcsess,它可以让您基于会话ID或模块名称之类的条件,有选择地从大量跟踪文件中抽取出 ...

  3. java拼接sql保留两位小数_SQL 保留两位小数的实现方式

    问题: 客户要求,跟金额相关的数据,打印出来要保留两位小数,比如:13.2/13.200要显示为13.20: 分析: 首先查看数据库中的数据定义,均为decimal(12,2) ,直接通过数据库查询的 ...

  4. sql insert 自动增量值_SQL中有关DQL、DML、DDL、DCL的概念与区别

    SQL(Structure Query Language)结构化查询语言是数据库的核心语言,是高级的非过程化编程语言.它功能强大,效率高,简单易学易维护.SQL语言基本上独立于数据库本身.使用的机器. ...

  5. sql 获取日期时分秒_Sql 中获取年月日时分秒的函数

    1. GETDATE() 返回当前的时间和日期. 语法:getdate() select getdate() 2. CONVERT() 把日期转换为新数据类型的通用函数,可以用不同的格式显示日期/时间 ...

  6. mysql sql数值转字符拼接_sql中的字符串拼接

    1. 概述 在SQL语句中经常需要进行字符串拼接,以sqlserver,oracle,mysql三种数据库为例,因为这三种数据库具有代表性. sqlserver: select '123'+'456' ...

  7. mysql sql 字符串字段保留数字_sql中取字符串中的数字语句_MySQL

    bitsCN.com one: declare @s varchar(20) declare @i varchar(20) set @i='' set @s='新会员必须购买350元产品' while ...

  8. java拼接sql保留两位小数_SQL保留两位小数,四舍五入

    数据库里的 float momey 类型,都会精确到多位小数.但有时候 我们不需要那么精确,例如,只精确到两位有效数字. 二.解决: 1. 使用 Round() 函数,如 Round(@num,2) ...

  9. Mybatis中sql的各种写法,项目中的。存储过程写法,创建索引写法

    关键是扩大自己的视野,因为有的我真的不知道可以这样写? 比如: 一:if test --可以去掉多余的and <if test = "defaultQuery and sum == f ...

最新文章

  1. Mac下布置appium环境
  2. 管理者如何提升下属执行力---视频学习记录
  3. 被学校辞退、拒绝FB后:语音识别大牛Povey确认兼职北京初创公司,称主业还选中国...
  4. 谁最终需要Java模块?
  5. 和gdi绘图效率比较_绘图计算器测评来袭!哪一款才是你AP考试的最佳拍档?
  6. linux分区始柱号,找到了linux分区顺序错乱修复方法
  7. HDU 2844 Coins 多重背包
  8. 刚刚人均国民收入突破1万美元,作为打工人的你有感知吗?
  9. 浅谈linux性能调优之六:IO调度算法的选择
  10. linux分布式文件部署,Linux的企业-分布式文件系统mfs(moosefs)搭建与配置
  11. SprinMVC 拦截器验证权限和登录与注销的实现
  12. 【课程设计】企业职工工资管理系统 C语言版
  13. java kpi_KRA与KPI 绩效考核
  14. GetDC、GetDCEx、GetWindowDC - [Daily APIs]
  15. java银行账户类_用java编写银行账户的存款方法
  16. 外骨骼机器人(一):Lokomat核心技术简介
  17. 第979期机器学习日报(2017-05-24)
  18. 教你如何避开雪花算法的坑
  19. 模拟文件目录系统-CatalogTree
  20. 这些大厂笔试题 你都见识(被无情鞭挞)过了吗?—— 哔哩哔哩篇

热门文章

  1. 直播推流神器 Kplayer 手把手教你在B站7*24h全天直播
  2. nginx的请求转发配置
  3. 工作经验和生活经验的吸取
  4. RFC2544 网络基准测试(Benchmarking Methodology for Network Interconnect Dev)
  5. VLC 视频转成rtsp流
  6. acrobat PDF删除部分_pdf虚拟打印机,PDF打印像Word一样简单“pdfFactory Pro”
  7. 基于C#-winform的书店采购管理系统的设计
  8. Borland 賣掉 CodeGear
  9. 施乐维修服务器,富士施乐故障维修代码
  10. 声卡自动修补appleHDA,支持AMD平台