mysql组内排序(分析函数)解决方案


mysql没有分析函数,要想实现组内排序必须自己实现

sql就不分析了 ,只有几行,很简单,基本思想就是自己创建行号。

测试数据:

DROP TABLE test;  


CREATE TABLE test( myNAME VARCHAR(10),name1 VARCHAR(10),COUNT1 BIGINT);  


DELETE FROM test;  


INSERT INTO test VALUES('1','a',2);

INSERT INTO test VALUES('1','b',1);;

INSERT INTO test VALUES('1','c',4);

INSERT INTO test VALUES('1','d',5);

INSERT INTO test VALUES('1','e',7);

INSERT INTO test VALUES('1','f',8);

INSERT INTO test VALUES('2','g',9);

INSERT INTO test VALUES('2','h',0);
  
INSERT INTO test VALUES('2','i',21);

INSERT INTO test VALUES('2','j',3);

INSERT INTO test VALUES('2','k',4);

INSERT INTO test VALUES('2','1',56);

INSERT INTO test VALUES('3','m',67);

INSERT INTO test VALUES('3','n',89);

INSERT INTO test VALUES('3','o',12);

INSERT INTO test VALUES('3','p',22);

INSERT INTO test VALUES('3','q',23);

INSERT INTO test VALUES('3','r',42);

INSERT INTO test VALUES('3','s',26);


实现sql:


SELECT myNAME, name1, COUNT1  


FROM (
SELECT b.myNAME, b.name1, b.count1,  IF(@name = b.myNAME, @rank := @rank + 1, @rank := 1) AS rank,@name:=b.myNAME  
 
FROM (  SELECT myNAME, name1, COUNT1   FROM test ORDER BY myNAME ASC, COUNT1 DESC) b,  


     (  SELECT @rownum := 0, @name := NULL, @rank := 0 ) a
     ) result 
WHERE rank<5;


最终输出:










评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值