博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mysql返回第n个值_获取mysql一组数据中的第N大的值
阅读量:1522 次
发布时间: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/

你可能感兴趣的文章
【第16周复盘】学习的飞轮
查看>>
如何利用pyecharts绘制炫酷的关系网络图?
查看>>
NCEPU:线下组队学习周报(007)
查看>>
【青少年编程】【二级】寻找宝石
查看>>
【组队学习】【26期】Linux教程
查看>>
LeetCode-LCP 18. 早餐组合(Goland实现)
查看>>
C++从入门到进阶近100本书推荐电子书pdf
查看>>
蓝桥杯 - [2014年第五届真题]分糖果(模拟)
查看>>
蓝桥杯 - [2013年第四届真题]大臣的旅费(DFS)
查看>>
蓝桥杯 - [2013年第四届真题]带分数(全排列)
查看>>
蓝桥杯 - [2013年第四届真题]幸运数(模拟)
查看>>
蓝桥杯 - [2013年第四届真题]横向打印二叉树(排序二叉树)
查看>>
蓝桥杯 - [历届试题]网络寻路(枚举)
查看>>
牛客网 - [中南林业科技大学第十一届程序设计大赛]兑换零钱(背包问题)
查看>>
HDU - Robberies(01背包)
查看>>
HDU - 最大报销额(01背包|贪心)
查看>>
HDU - Coins(完全背包)
查看>>
JXFCZX — 砝码称重1(DFS+背包)
查看>>
JXFCZX — 质数和分解(完全背包)
查看>>
JXFCZX — 花店橱窗(动态规划)
查看>>