发布时间:2021-04-28 11:10:32
先看看表的结构和数据:
我们知道怎么查询某个组的第几名数据,比如查 a 组的第 4 名数据如下,注意 limit 后的数字比所需要的数字小 1:
我们把上述查询结合到表数据中,这样我们增加了一列第 4 名的数值:
这时候要查询前 4 名的数据就好说了,直接比较大小:
等等,上面的 c 组呢?原来 NULL 值影响了,这样的话我们还得对少于所要排名的数据做一个处理,我们用相应组的最大值来做补充,如果没有相应排名的数值的话就用最大值来做比较:
这下再做比较就能得到正确的前 4 名的数据了:
如果语句以后某个时候还要用,并且排名不确定,可以把排名做为一个变量来传入,这时候由于 limit 中不能用变量,可以使用预编译语句来实现:
如果经常使用,使用存储过程也是个方便的主意,此处略
......【阅读全文】