SQL开发中常用到的几种去重方案

SQL开发中常用到的几种去重方案


distinct去重

  • stinct只能返回他的目标字段,而无法返回其他字段,

select distinct name from user

一般distinct用来查询不重复记录的条数。

group by去重

  • 如果要查询不重复的记录,有时候可以用group by,但是无法获取到最新的数据

select * from oc_ele_chat a where source_id = 1 and to_id=54 group by source_id order by id desc

可以看出,通过order by desc也无法获取的最新的数据.

not exists 去重

  • not exists 去重是根据添加的最新时间来排序

    select * from oc_ele_chat a where source_id = 1 and class = 3 and not exists (select * from oc_ele_chat b where a.`to_id` = b.`to_id` and created_time >a.created_time)

子查询方法

select * from oc_ele_chat A where A.class = 45 and ((A.source_id =3 and A.reply_type = 2) or A.source_id =2) and A.id in (select MAX(id) from oc_ele_chat B where (B.from_id=A.from_id and B.to_id=A.to_id) or (B.to_id=A.from_id and B.from_id=A.to_id))

in方式去重

select * from oc_ele_chat a where id in(select max(id) id from oc_ele_chat b where source_id = 2 and from_id = 67 group by to_id order by id desc)

第二种案例

select * from oc_ele_chat A where (A.source_id =2 or (A.source_id =3 and A.reply_type = 2)) and (A.from_id = 67 or A.to_id = 67) and A.id in (select MAX(id) from oc_ele_chat B where (B.from_id=A.from_id and B.to_id=A.to_id) or (B.to_id=A.from_id and B.from_id=A.to_id)) order by A.id desc

利用最大的id值进行判断去重

select * from oc_ele_chat  A where A.class = 45 and ((A.source_id =3 and A.reply_type = 2) or A.source_id =2) and not exists
       (select 1 from oc_ele_chat  B
       where ((B.from_id=A.from_id and B.to_id=A.to_id)
              or (B.to_id=A.to_id and B.from_id=A.to_id))
              and B.id>A.id)
(0)

相关推荐

  • sql语句大全(详细)

    sql语句大全(详细) 数据库操作 1.查看所有数据库 show databases; 2.查看当前使用的数据库 select database(); 3.创建数据库 create databases ...

  • 【收藏篇】Android 开发中常用的10种工具类

    导语 Android开发中,收集一些常用的代码工具类是非常重要的.现在Android开发技术已经很成熟了,很多代码大牛已经写出了很多框架和工具类,我们现在应该要站在巨人的肩膀上做开发了.今天我把平时开 ...

  • 嵌入式开发中常用的几种通信接口总结

    在嵌入式系统中,板上通信接口是指用于将各种集成电路与其他外围设备交互连接的通信通路或总线. 以下内容为常用板上通信接口:包括I2C.SPI.UART.1-Wire: I2C总线 I2C总线是一种同步. ...

  • 开发中常用的命令和使用(基础)

    nginx的使用 1. 启动nginx :/etc/init.d/nginx start 2.停止nginx:/etc/init.d/nginx stop 3.重启nginx:/etc/init.d/ ...

  • 掌握EXCEL中常用的这几种组合方式 让同事敬佩一下

    大家好,我是EXCEL好朋友 在工作中函数的使用是我们必不可少的技能,但是常常单一的函数很难满足工作中遇到的变换万千的数据模式,所以今天EXCEL好朋友就收集和整理了一些常用的函数黄金搭档,与英语中的 ...

  • 认真学习直播平台开发中应对延迟的五种方法

    如今的直播行业大火,一部手机就可以让你接触到日常生活中的各种直播软件,比如一对一直播.带货直播.网课直播.游戏直播等等.无论是什么类型的直播,延迟都是直播平台开发的痛点.实现低延迟是大多数直播系统共同 ...

  • 《养生保健荟萃:生活中常用到的几种养生保健茶》

    红糖红枣姜茶: 红枣中含有大量维生素,能提高免疫力,减少胆结石的产生,还具有滋阴补阳的功效.生姜可以健脾温胃,具有活血.祛寒.除湿.发汗等功能. 女性长期饮用可以美容养颜,喝一杯姜枣茶,既能补体内阳气 ...

  • Go业务开发中常用的几个开源库

    前言 哈喽,大家好,我是asong.拖更了好久,这周开始更新. 最近总有一些初学Go语言的小伙伴问我在业务开发中一般都使用什么web框架.开源中间件:所以我总结了我在日常开发中使用到的库,这些库不一定 ...

  • 7种机械设计中常用的密封形式

    机械设计时,如何选择密封的方式?本文带您了解机械设计中常见的动密封形式.分别是填料密封.机械密封.干气密封.迷宫密封.油封密封.动力密封和螺旋密封. 动设备密封问题是伴随着设备的运行而始终存在的,今天 ...

  • 7种机械设计中常用的密封形式,全知道算我输!

    机械设计时,如何选择密封的方式?本文带您了解机械设计中常见的动密封形式.分别是填料密封.机械密封.干气密封.迷宫密封.油封密封.动力密封和螺旋密封. 动设备密封问题是伴随着设备的运行而始终存在的,今天 ...