Samding 发表于 2022-3-11 21:06

数据库排序自定义并列显示问题

本帖最后由 Samding 于 2022-3-20 14:25 编辑

比如有一个数据库,要查询出价格前10的商品,如果是前面价格重复的直接占位(例:10999998765),如果重复后包括最后一项则全部显示(例:10987654322222222),代码怎么写,mysql或oracle都可以

孤狼微博 发表于 2022-3-11 22:18

直接查询了排序 取10个这样可以吗

降龙18掌 发表于 2022-3-11 23:01

自定义并列显示问题

冬酒暖阳 发表于 2022-3-12 02:04

本帖最后由 冬酒暖阳 于 2022-3-12 02:08 编辑

https://blog.csdn.net/u013435893/article/details/80350269

我看这篇文章写的还蛮详细的,应该属于并列且占位的情况

ligfoo 发表于 2022-3-14 15:21

使用窗口函数 ROW_NUMBER和DENSE_RANK,然后通过限定rn 和rk来筛选数据,示例如下:
价格   10987654322    222222
RN      1   2345678910 11
RK      1    23456789   9   9



价格   10999998765   4
RN   1   2   345678910 11
RK   1   2   2   2223456   7

最后的 WHERE (RN <= 10 AND RK <= 10 ) OR ( RK = 10 AND RN > 10)
如果是前面的数据重复,则不占位,那么RN <= 10即可筛选出要的数据,如果是最后1位的数据重复,那么RK一定是<=10的,WHERE的前一部分条件已经包含了( RK<= 10和RN <= 10)的,剩下另一部分是 RK<= 10但 RN > 10的,这两部分合起来就是要返回的数据了。
页: [1]
查看完整版本: 数据库排序自定义并列显示问题