栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

MySQL选择前n个最大值

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

MySQL选择前n个最大值

对于n = 2,您可以

SELECt max(column1) m FROM table tGROUP BY column2UNIOnSELECt max(column1) mFROM table tWHERe column1 NOT IN (SELECt max(column1) WHERe column2 = t.column2)

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

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

基本上是这样的

SELECT t.*FROM   (SELECt grouper,          (SELECT val FROM table liWHERe li.grouper = dlo.grouperORDER BY      li.grouper, li.val DESCLIMIT 2,1) AS mid   FROM       (      SELECt DISTINCT grouper      FROM table      ) dlo    ) lo, table tWHERe 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。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/402757.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号