分享好友 最新动态首页 最新动态分类 切换频道
mysql相同的值不同的排名,如何根据不同的值对MySQL结果进行排名?
2024-12-28 10:13

I have 2 different tables in my database by the name of: rank, settings.

Here is how each table looks like with a few records in them:

Table #rank:

id points userid

-- ----- ------

1 500 1

2 300 2

3 900 3

4 1500 4

5 100 5

6 700 6

7 230 7

8 350 8

9 850 9

10 150 10

Table #settings:

userid active

------ ------

1 0

2 1

3 1

4 1

5 1

6 0

7 1

8 1

9 0

10 1

What I basically want to achieve is to select a specific row from #rank by ID, sort it by points and select 3 rows above the specific ID and 3 row below the specific ID but only for rows where the active column (from #settings) for the user equals 1.

For example:

I would like to select from #rank the ID of 8, and it should return me the following:

rank points userid

---- ----- ------

2 150 10

3 230 7

4 300 2

5 350 8

6 900 3

7 1500 4

I have created quite an extensive query for this, but the problem is, that it is ranking the columns before it decides that the user is active or not. However I need to rank the columns after it is decided that the user is active or not.

SELECT sub2.sort, sub2.points, sub2.userid

FROM

(

SELECT @sort1 := @sort1 + 1 AS sort, puu.points, puu.userid

FROM rank as puu,

(SELECT @sort1 := 0) s

LEFT JOIN

(

settings as p11

)

ON puu.userid = p11.userid,

WHERE p11.active = 1

ORDER BY puu.points DESC

) sub1

INNER JOIN

(

SELECT @sort2:=@sort2+1 AS sort, p2.points, p2.userid

FROM rank as p2,

(SELECT @sort2 := 0) s

LEFT JOIN

(

settings as p12

)

ON p2.userid = p12.userid,

WHERE p12.active = 1

ORDER BY points DESC

) sub2

ON sub1.userid = :userid

AND sub2.sort BETWEEN (sub1.sort - 5) AND (sub1.sort + 5)

Can you guys find any solution for my problem? If you can provide an SQLfiddle demo, that would be really awesome!

解决方案SELECT sort, points, user_id, active FROM (

SELECT @pos := @pos + 1 AS sort, id, points, r.user_id, s.active,

IF(user_id = :userid, @userpos := @pos, 0)

FROM rank r

JOIN settings s USING(user_id)

JOIN (SELECT @pos := 0, @userpos := 0) p

WHERE s.active = 1

ORDER BY points DESC

) list

WHERE sort BETWEEN @userpos - 3 AND @userpos + 3

最新文章
小蜂观察:广东省肇庆市罗氏沼虾产业分析简报
肇庆市作为“中国罗氏沼虾之乡”,拥有13万亩的养殖面积,年产量4.5万吨,从业人员约8万人,综合产值超过100亿元。这一产业链已经形成了百亿元规模的产业集群,成为当地产销规模大、品牌知名度高、辐射带动能力强的优势特色支柱农业产业。
QQ营销的三大技巧
QQ可通过下面三种方式进行:一、群发广告1.经营战略 广泛群发,覆盖范围较大,适合大众消费品;精准群发,在特定目标群发,针对精准客户。2.操作步骤 添加QQ群,努力在群里获得好排名,培养起感情,然后发广告。(1)添加QQ群 在QQ群搜索功能
骁龙870详细对比联发科天玑1000+,究竟谁是性价比之王
【科技犬】最近收到了很多网友的私信,询问搭载高通骁龙870处理器的Motorola Edge S和搭载联发科天玑1000+的realme X7 Pro,这两款谁的性能更强?这两款机型的8+128版本前者售价2599元、后者售价2299元,那么这两款手机究竟怎么选呢?究竟
美国facebook账号出售平台(facebook账号出售批发cookie)
在当今社交媒体盛行的时代,越来越多的人开始意识到自己的Facebook账号可能具有一定的市场价值。一些专门的平台也应运而生,提供了一个方便快捷的渠道,让用户可以出售自己的Facebook账号。这种交易行为涉及到个人信息安全和数据隐私等方面
家庭医生宣传日
 2022年5月19日是第12个“世界家庭医生日”。近年来,我州各地坚持服务质量优先、重点人群优先、慢病患者优先,不断完善基层医疗卫生服务体系,健全家庭医生签约服务政策措施,强化签约团队履约意识和服务技能培训,加强医患交流互动和宣
Web性能优化最佳实践指南
网站性能直接影响用户体验和转化率。据统计,页面加载时间每增加1秒,转化率就会下降7%。本文将从多个维度介绍如何优化网站性能。1. 资源压缩与合并// 2. 合并多个CSS文件 2. 懒加载策略1. 浏览器缓存策略 2. Service Worke
解锁AI绘画:如何轻松生成超逼真美女写真?
进入主界面后,你会看到多种风格选项,包括高清写实、卡通风格、复古艺术等。选择你想要的风格,然后点击继续。步骤三:输入你的需求描述在生成框中,输入你想要生成的美女类型,比如“清纯自然的女孩,长发,穿着白色裙子”。尽量使用生动
淘宝每天补单的好处是什么?淘宝不补单能做起来吗?(每天补单是不是把淘宝客关了)
在电商领域,补单通常指的是通过合法手段增加销量和提升商品排名的行为。淘宝作为中国最大的电商平台之一,其内部的搜索排名机制和销量密切相关。每天补单对商家而言,有着不可忽视的积极作用。 一、淘宝每天补单的好处是什么? 1. 提升搜
直通车推广的扣费公式是什么?有何作用?
在淘宝平台里面,商家都会使用一些推广工具来进行宝贝的推广,直通车是经常使用的一种,可以给店铺带来流量,但是它的计算公式有很多种,现在我们来了解下。1、直通车扣费公式:实际扣费=下一名出价X下一名质量得分/您的质量得分 + 0.01元
火爆直播强获客,火爆视频强宣传!六重豪礼助招商!
抖音、快手、视频号、小红书的出现,让短视频和直播站在了更大的风口上!越来越多的渠道商通过直播找产品,越来越多的企业通过短视频进行品牌宣传,产品招商!直播+短视频营销已来,抓住风口,就能抓住商机!十七年火爆,聚势新媒体,直播
相关文章
推荐文章
发表评论
0评