sql 语句查询 按某字段去重 保留按某个字段排序top1

2023-10-29

例子:

create table tablename  (id int identity(1,1),attachid int,name varchar(10))
insert into tablename  values(23,'sss')
insert into tablename   values(33,'sdfs')
insert into tablename   values(33,'4434')
insert into tablename   values(45,'dsdsd')

select * from  tablename  as  a where not exists (select 1 from  tablename  where attachid=a.attachid and name<a.name) 

按某个字段去重              保留按某个字段排序的最大/小值

 

       后面括号里的意思是再从原表中找有没有比当前记录相同字段的比较字段更大或更小的 如果有  则不插入  如果没有  则插入

       exists   是个条件  后面的结果集有值的时候 条件成立   后面结果集为空的时候 条件不成立   所以后面子查询中select 后面跟什么字段不重要  关键是看结果集是否为空    

       加not  是取相反的意思

       name <a.name 是取最小的     反之是取最大的 

原数据

id  attachid name
1    23       sss
2    33       sdfs
3    33       4434
4    45       dsdsd

 

比较后

id          attachid    name

----------- ----------- ----------

1           23          sss

3           33          4434

4           45          dsdsd

 

注意:from后面不能跟别名只能跟临时表 #table

复杂一点的例子:

 查询 WorkFlowTask 表中 ReceiveID为某值 而且状态是2或者3的 记录  而且在同样GroupID 中只保留时间最新的  并且结果按完成时间排序

(select * from 
( SELECT *,ROW_NUMBER() OVER(ORDER BY CompletedTime1 DESC) AS PagerAutoRowNumber
FROM WorkFlowTask 
WHERE ReceiveID='00000000-0000-0000-0000-000000009667' AND [Status] IN(2,3) ) as a 
where not exists  --其实后面只是一个查询条件(包含子查询)
        (select 1 from WorkFlowTask 
           where GroupID=a.GroupID and ReceiveTime>a.ReceiveTime and ReceiveID='00000000-0000-0000-0000-000000009667' AND [Status] IN(2,3)
         )

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

sql 语句查询 按某字段去重 保留按某个字段排序top1 的相关文章

  • idea中类存在编译器报错类无法找到,打包正常解决

    步骤 关键在于清掉类在idea的cache 1 刷新maven项目 2 清理idea缓存 3 maven clean install 4 重新bulid 5 如果使用了lombok插件开启之后重新build 6 maven依赖冲突导致
  • Gin微服务框架_golang web框架_完整示例Demo

    Gin简介 前些天发现了一个巨牛的人工智能学习网站 通俗易懂 风趣幽默 忍不住分享一下给大家 点击跳转到网站 Gin是一个golang的微框架 封装比较优雅 API友好 源码注释比较明确 具有快速灵活 容错方便等特点 其实对于golang而
  • Haystack 太强了!存 2600 亿图片

    作者 奇伢 来源 奇伢云存储 小文件存储 小文件存储 老生常谈的问题 先聊聊小文件存储重点关注的是什么 以前我们提过 对于磁盘来说 小 io 吃 iops 大块 io 吃吞吐 划重点 小文件的重点是 io 次数 为什么每次提到海量小文件的时

随机推荐

  • 定时器串口收发和空闲中断串口收发+STM32CubeMX

    引言 最近在做串口实验 总结了两种串口收发的方法 第一种是用定时器定的 第二种是使用空闲中断 第一种 使用定时器 具体做法是在串口接收数据时启动定时器 每接收一帧数据要复位定时值以保证定时器不会溢出 根据波特率计算出大概什么时候接收数据完成
  • 保姆级别uni-app使用低功耗蓝牙

    实现方式 本文使用 uni app Vue3 的方式进行开发 以手机app的方式运行 uni app 提供了低功耗蓝牙 的 api 和微信小程序提供的 api 是一样的 所以本文的讲解也适用于微信小程序 本文参考文档 https blog
  • 普中51单片机独立按键原理及源代码

    由于按键是机械弹性按键 具有弹性 在毫秒级别的时间下 按键后有短暂的抖动 转载自江科大自协化51单片机入门教程 如果按键一次用力较轻 按键里的小金属片可能会多次抖动 使得LED闪烁多次 即轻微按一次 小概率出现多次LED闪烁 消除毫秒级别下
  • 设计模式 -- 享元模式(Flyweight Pattern)

    使用共享对象可以有效的支持大量的细粒度对象 应用场景 主要目的是实现对象的共享 即共享池 当系统中对象多的时候可以减少内存的开销 通常与工厂模式一起使用 例如 缓存 对象池 Android中 Message obtain通过重用Messag
  • 如何在ubuntu系统下安装jdk

    由于换了系统 要从新配置下环境 下面说明下如何在ubuntu系统下安装jdk 首先安装eclipse 我是在ubuntu软件中心安装的 3 8版本 比较老 但图省事也就先这样了 然后要从网上下载jdk1 7 3 8版本最多支持到jkd1 7
  • Android 获取屏幕宽高的正确姿势

    前言 在开发时 我们经常需要根据屏幕的宽高来进行对view的适配 无论是自定义view还是andorid自带的一些控件 比如说需要占当前屏幕高度的30 就需要获取到屏幕的宽高 但在获取宽高时我遇到了一些坑 总结如下 获取高度 下面两种方法都
  • C语言:文件读取

    C语言 文件读取 在C语言中 我们可以使用标准库中的文件操作函数来读取和写入文件 本文将介绍如何使用C语言读取文件 首先 我们需要打开一个文件 可以使用fopen 函数来打开文件 该函数需要两个参数 第一个参数为文件名 第二个参数为打开方式
  • 栈的初始化、销毁、出入栈、取栈顶元素

    一 初始化 void SeqStackInit SeqStack stack if stack NULL return stack gt size 0 stack gt capacity 1000 yuan shi da xiaostack
  • csdn 首发最轻松安装教程:关于centos7 centos8 centos9如何安装erlang和对应版本的rabbitmq

    1 前言 最近做毕业设计 自己装了个虚拟机 但通过各种rpm下载包的方式安装erlang和rabbitmq 总是无法启动或启动失败 琢磨了一番 是erlang相关的包依赖没有自动安装 起码得几十个 由于过于麻烦 下面请看图 所以我写了一个r
  • idea远程调试

    目录 1 背景 2 代码 3 idea配置 4 服务端远程开启debug服务 5 远程调试 5 1 服务端 5 2 本地启动 6 注意 1 背景 线上出了问题 我们一般是通过日志来定位问题 在没有日志的情况下 往往定位问题是比较困难的 这时
  • Java基础教程2-安装和配置Eclipse IDE环境

    前面文章介绍了如何安装JDK和设置环境变量 这篇介绍如何安装eclipse IDE IDE是集成开发环境的意思 你应该听说过eclipse是一个开发人员常用的IDE工具 可以这么说 几乎所有的开发人员都会用这个IDE工具来开发 当然市场上有
  • SpringMVC+Spring+Mybatis +Annotation实现方法,按钮级别的细粒度权限控制

    本文转载自 http blog csdn net ycyk 168 article details 18456631 随着企业信息化的不断深入 各种各样的信息系统成为提高企业运营及管理效率的必备工具 越来越多的企业核心机密如销售机会 客户资
  • ajax同时返回list和字符串,我在页面的后台代码中写了个方法 getList() 返回的是个 string[] 类型的数组,要在javascript 中调用...

    AJAX tools ajax conn function ajaxSubmit url postStr action var ajax false try ajax new ActiveXObject Msxml2 XMLHTTP cat
  • Django与mysql(2)-jquery(2)

    作者 芝士小熊饼干 系列专栏 数据结构 蓝桥杯 算法 坚持天数 18天
  • docker 容器ping不通宿主机/外网问题

    docker 容器ping不通宿主机 外网问题 问题 docker 容器与数据库建立连接失败 宿主机ip在数据库的白名单中 宿主机连接数据库成功 那么问题就剩docker 容器的网络与数据库是否是通的 启动服务进入容器内部 ping数据库是
  • django得到Model的全部字段名(field)

    得到所有的field MyModel meta get fields 打印全部字段名称 print field name for field in OriginFlowModel meta get fields
  • Scala中的case类

    1 使用场景 1 1首先 在一个类前添加 case Scala会自动给这个类 创建伴生对象 并创建好 apply 工厂方法 和 unapply 方法 使得 实例化该类时 不需要用new 函数式编程写法就可 eg case class Peo
  • 解决ERROR (Errno::ENOENT): No such file or directory

    在windows上安装Ruby后 再通过gem install redis dump命令来安装RedisDump 在通过使用redis dump命令进行验证RedisDump是否安装成功时 提示错误如下 解决办法如下 查找Ruby的安装目录
  • qt中QOpenGLTexture纹理使用

    纹理类型的创建 include
  • sql 语句查询 按某字段去重 保留按某个字段排序top1

    例子 create table tablename id int identity 1 1 attachid int name varchar 10 insert into tablename values 23 sss insert in