数据库排序自定义并列显示问题
本帖最后由 Samding 于 2022-3-20 14:25 编辑比如有一个数据库,要查询出价格前10的商品,如果是前面价格重复的直接占位(例:10999998765),如果重复后包括最后一项则全部显示(例:10987654322222222),代码怎么写,mysql或oracle都可以 直接查询了排序 取10个这样可以吗 自定义并列显示问题 本帖最后由 冬酒暖阳 于 2022-3-12 02:08 编辑
https://blog.csdn.net/u013435893/article/details/80350269
我看这篇文章写的还蛮详细的,应该属于并列且占位的情况 使用窗口函数 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]