博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mysql返回第n个值_获取mysql一组数据中的第N大的值
阅读量:1524 次
发布时间:2019-04-21

本文共 1049 字,大约阅读时间需要 3 分钟。

create table tb(name varchar(10),val int,memo varchar(20))

insert into tb values('a', 2, 'a2')

insert into tb values('a', 1, 'a1')

insert into tb values('a', 3, 'a3')

insert into tb values('b', 1, 'b1')

insert into tb values('b', 3, 'b3')

insert into tb values('b', 2, 'b2')

insert into tb values('b', 4, 'b4')

insert into tb values('b', 5, 'b5')

SELECT * from tb

f893dbd2ce9dca49d5631ca2c1b95791.png

方法1:分组中第二大的数据 思路是:先获取第二大的val,然后作为查询条件 进行关联自己,联表查询,使用linit可以获取结果中任意位置的数据

select a.* from tb a where val = (select val from tb where name = a.name ORDER BY val desc LIMIT 1,1) order by a.name

fa7bb5c1a65c9ff051610b4597e9468c.png

方法2:分组中第二大的数据 思路是先获取最大的值,然后进行关联自己,联表查询

SELECT a.* FROM tb a WHERE val = (SELECT MAX(val) FROM tb WHERE val < (SELECT MAX(val) from tb WHERE name = a.name) and a.name = name )

再来个简单的没有分组,获取第二大的数据

create table tb1(name varchar(10),val int,memo varchar(20))

insert into tb values('a', 2, 'a2')

insert into tb values('a', 1, 'a1')

insert into tb values('a', 3, 'a3')

SELECT * from tb1

109a85b34cf50d4da224ea8253e91860.png

//第二大的数据,不进行分组

SELECT a.* FROM tb1 a WHERE val = (SELECT MAX(val) FROM tb1 WHERE val < (SELECT MAX(val) from tb1))

19d72735231b3274cd985d2d2a05d3ad.png

转载地址:http://khiby.baihongyu.com/

你可能感兴趣的文章
Leetcode C++ 《第181场周赛-1》 5364. 按既定顺序创建目标数组
查看>>
Leetcode C++ 《第181场周赛-2》 1390. 四因数
查看>>
阿里云《云原生》公开课笔记 第一章 云原生启蒙
查看>>
阿里云《云原生》公开课笔记 第二章 容器基本概念
查看>>
阿里云《云原生》公开课笔记 第三章 kubernetes核心概念
查看>>
阿里云《云原生》公开课笔记 第四章 理解Pod和容器设计模式
查看>>
阿里云《云原生》公开课笔记 第五章 应用编排与管理
查看>>
阿里云《云原生》公开课笔记 第六章 应用编排与管理:Deployment
查看>>
阿里云《云原生》公开课笔记 第七章 应用编排与管理:Job和DaemonSet
查看>>
阿里云《云原生》公开课笔记 第八章 应用配置管理
查看>>
阿里云《云原生》公开课笔记 第九章 应用存储和持久化数据卷:核心知识
查看>>
linux系统 阿里云源
查看>>
国内外helm源记录
查看>>
牛客网题目1:最大数
查看>>
散落人间知识点记录one
查看>>
Leetcode C++ 随手刷 547.朋友圈
查看>>
手抄笔记:深入理解linux内核-1
查看>>
内存堆与栈
查看>>
Leetcode C++《每日一题》20200621 124.二叉树的最大路径和
查看>>
Leetcode C++《每日一题》20200622 面试题 16.18. 模式匹配
查看>>