mysql选择值最大的前十个_MySQL选择前n个最大值

小编典典

对于n = 2,您可以

SELECT max(column1) m

FROM table t

GROUP BY column2

UNION

SELECT max(column1) m

FROM table t

WHERE column1 NOT IN (SELECT max(column1)

WHERE column2 = t.column2)

对于任何n,您都可以使用此处介绍的方法模拟分区之上的排名。

编辑:其实这个文章会给你你需要什么。

基本上是这样的

SELECT t.*

FROM

(SELECT grouper,

(SELECT val

FROM table li

WHERE li.grouper = dlo.grouper

ORDER BY

li.grouper, li.val DESC

LIMIT 2,1) AS mid

FROM

(

SELECT DISTINCT grouper

FROM table

) dlo

) lo, table t

WHERE t.grouper = lo.grouper

AND t.val > lo.mid

用grouper要分组val的列的名称和保存值的列的名称替换。

要弄清楚它的功能是如何进行的,请从最内部的查询中逐步进行并运行它们。

而且,有一点简化- mid如果某些类别没有足够的值,则子查询可以返回NULL,因此应该在比较中将该常量保留为COALESCE(在您的情况下为MIN,

val的域,在本文中为MAX)。

EDIT2: 我忘了提到确定n(LIMIT n,1)的是LIMIT 2,1。

2020-05-17

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值