SELECT cid ,ip,quan,rank
FROM (
SELECT b.cid ,b.ip,quan,@rownum:=@rownum+1 ,
IF(@pdept=b.cid,@rank:=@rank+1,@rank:=1) AS rank,
@pdept:=b.cid
FROM (
SELECT cid,ip,count(num) quan
FROM schema.table_name
where cid in ('aid1','aid2')
group by cid ,ip_address
order by cid desc,count(num) desc
) b ,
(SELECT @rownum :=0 , @pdept := '' ,@rank:=0) c
) result
HAVING rank <4 ;
FROM (
SELECT b.cid ,b.ip,quan,@rownum:=@rownum+1 ,
IF(@pdept=b.cid,@rank:=@rank+1,@rank:=1) AS rank,
@pdept:=b.cid
FROM (
SELECT cid,ip,count(num) quan
FROM schema.table_name
where cid in ('aid1','aid2')
group by cid ,ip_address
order by cid desc,count(num) desc
) b ,
(SELECT @rownum :=0 , @pdept := '' ,@rank:=0) c
) result
HAVING rank <4 ;
本文提供了一个使用MySQL进行复杂查询的例子,展示了如何根据指定条件(cid为'aid1'或'aid2')获取每组数据的排名,同时考虑了不同cid下的ip地址出现次数,并限制返回结果中每个cid下的排名不超过前三名。
422

被折叠的 条评论
为什么被折叠?



