当前位置: 首页 > news >正文

oracle表 分组,并查每组第一条

oracle主要用到的函数:OVER(PARTITION BY)

mysql主要用到的函数:LIMIT

(用到3个地方:分组列、组内排序列、表名)

oracle:

select t.*
from 
    (
        select a.*, ROW_NUMBER() OVER (PARTITION BY 分组列 ORDER BY 组内排序列 DESC) rn 
        from 表名 a
    ) t 
where t.rn = 1

 select t.* from (
    select a.*, ROW_NUMBER() OVER (PARTITION BY 分组列 ORDER BY 组内排序列 DESC) rn_001 
    from 表名 a
) t where t.rn_001 = 1

 

mysql:

第一种:

先排序,再分组。

SELECT * 
FROM
(
    SELECT * 
    FROM 表名 
    ORDER BY 组内排序列 DESC 
    LIMIT 10000
) a 
GROUP BY 分组列

 mysql5.7中,子查询排序默认失效,用limit来恢复排序。
另:

   oracle中,select部分出现group by部分,以外的列,会报错,要不就得用聚合函数包裹列。
   mySQL中,默认取了第一条,所以可以这样写。

 

第二种:

先通过聚合函数查出某几列的数据,再自连接查出其他列。

 

http://www.lryc.cn/news/16359.html

相关文章:

  • Java代码弱点与修复之——DE: Dropped or ignored exception(无视或忽略异常)
  • JavaEE简单示例——动态SQL之更新操作<set>元素
  • 【极海APM32替代笔记】低功耗模式配置及配置汇总
  • 攻击者失手,自己杀死了僵尸网络 KmsdBot
  • 东阿县高新技术企业认定条件和优惠政策 山东同邦科技分享
  • 【基础算法】哈希表(拉链法)
  • 硬件学习 软件Cadence day07 PCB 底板电路图布线
  • SkyWalking仪表盘使用
  • 面渣逆袭:分布式十二问,万字图文详解
  • 设计模式C++实现23:中介者模式(Mediator)
  • Java方法【未完待续】
  • (考研湖科大教书匠计算机网络)第六章应用层-第一、二节:应用层概述和C/S及P2P
  • 禅道bug提醒脚本部署
  • 利用spring的retry重试编写Feign远程调用重试
  • Docker启动RabbitMQ,实现生产者与消费者
  • 【C语言】函数栈帧的创建与销毁
  • 【Git】使用Git上传项目到远程仓库Gitee码云步骤详解
  • Head First设计模式---3.装饰者模式
  • Python 算法交易实验48 表字段设计
  • 库存管理系统-课后程序(JAVA基础案例教程-黑马程序员编著-第六章-课后作业)
  • 【极海APM32替代笔记】HAL库低功耗STOP停止模式的串口唤醒(解决进入以后立马唤醒、串口唤醒和回调无法一起使用、接收数据不全的问题)
  • Python类变量和实例变量(类属性和实例属性)
  • Glide加载图片
  • 有关时间复杂度和空间复杂度的练习
  • linux服务器nfs数据挂载
  • Python 自动化测试必会技能板块—unittest框架
  • mysql存储引擎、事务、索引
  • 毕业论文图片格式、分辨率选择及高质量Word转PDF方法
  • 华为外包测试2年,不甘被替换,168天的学习转岗成正式员工
  • 简单的C++:【运算符重载】新手易学