分享好友 最新动态首页 最新动态分类 切换频道
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

最新文章
中国减少眼部脂肪医院推荐:减少眼部脂肪医院前50强这几家不容错过
中国减少眼部脂肪医院推荐:减少眼部脂肪医院前50强这几家不容错过,你知道全国减少眼部脂肪哪家医院好?大多数求美者更关注全国减少眼部脂肪医院的排名50强。事实上前50名这些医院都是全国著名的减少眼部脂肪医院。接下来,让我们一起看看
高清美女写真生成器:揭秘超实用AI绘画工具的魅力与教程
接下来是【Artbreeder】。该工具最大的亮点在于其强大的混合功能,用户可以通过调整不同的图像属性,如化妆、发型、表情等,来打造符合自己想法的美女画像。这款工具提供丰富的自定义选项,非常适合设计师和艺术爱好者。然而,由于功能过于
计算机一级office 6.3.2
计算机一级office是专门为用户打造的一款计算机做题宝典,通过软件用户可以快速进行计算机一级刷题,还可以使用软件反复练习多种题型,通过软件随时进行错题巩固,以及在线进行习题训练功能。计算机一级office软件功能 【解析】详细解析做
新华都跌0.68%,成交额2.69亿元,近5日主力净流入-1795.46万
12月16日,跌0.68%,成交额2.69亿元,换手率5.56%,总市值52.55亿元。根据AI大模型测算新华都后市走势。短期趋势看,该股当前无连续增减仓现象,主力趋势不明显。主力没有控盘。中期趋势方面,下方累积一定获利筹码。近期该股获筹码青睐,
SEO大数据,揭秘新时代搜索引擎优化秘籍
在SEO大数据时代,本文揭示了搜索引擎优化策略的新篇章。通过分析海量数据,我们探讨了如何利用大数据技术提升网站排名,实现高效SEO。文章从关键词研究、内容优化、链接策略等方面展开,为优化人员提供实用指南。随着互联网的飞速发展,搜
OSSEC搭建与环境配置Ubuntu
           OSSEC是一款开源的多平台基于主机的入侵检测系统,可以简称为HIDS。它具备日志分析,文件完整性检查,策略监控,rootkit检测,实时报警以及联动响应等功能。它支持多种操作系统:
淘宝关键词和标题如何写
淘宝关键词和标题如何写  只要该买家浏览或收藏该宝贝,当买家再次搜索同样的关键词会优先展示该宝贝,很多买家都没有清空浏览器的习惯,这就是重个性化流量,我只要精准定位,操作方法使用得当,优化标题提升关键词排名没有那么多困难,
甘肃兰州软地基注浆处理2024年排行榜推荐
甘肃兰州软地基注浆处理2024年排行榜推荐标题:2024年甘肃兰州软地基注浆处理排行榜推荐随着我国基础设施建设的快速发展,地基处理技术在各类工程项目中发挥着越来越重要的作用。在甘肃兰州地区,软地基注浆处理作为一种有效的地基加固方法
搜狗拼音输入法 V14.6.0.9606 官方最新版
  搜狗支持全拼、简拼、混合输入等输入方式,可以快速将用户的拼音输入转化为准确的汉字。搜狗拼音输入法提供了智能联想功能,能根据用户输入的拼音自动推荐相关词汇和短语,大大提高了输入效率,还提供了个性化设置和丰富的主题皮肤,让
相关文章
推荐文章
发表评论
0评