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

最新文章
云电脑时代创新领航者TOP10震撼发布,揭秘未来科技新纪元
新用户专享:「香港/美国云服务器」新购6折 低至9元/月!点击查看活动介绍>>>云电脑行业正以全新的面貌展现在人们面前。众多企业纷纷加入这一领域。然而,市场的实际状况究竟怎样?各种评价体系又透露了哪些信息?这些问题都蕴含着丰富的价
发表评论 查看所有评论(13)
《Play商店安卓版(Google Play 商店)》是谷歌官方的应用市场平台,这里汇聚了大量的游戏和软件资源,开发者可以在平台上发布自己的作品,及时的更新自己的作品,用户朋友们可以在平台上下载自己喜欢的游戏和软件,可以实时的进行新版本的更
浅谈SEO与SEM的区别
很多刚接触SEO的朋友,对于SEO都有一些迷茫和不解。今天,若言就简单的为大家介绍一下什么是SEO、什么是SEM、SEO与SEM的区别,希望对大家能有所帮助!搜索引擎优化(Search engine optimization,简称SEO)。针对搜索引擎的理论机制,对网
零基础构建小型,一站式搭建全攻略
本指南从零开始,详细介绍如何搭建一个小型。涵盖、选择、搭建、内容管理、SEO优化等关键步骤,助你轻松掌握建设全过程。确立类型与目标挑选适宜的构建域名与购置空间选择模板与设计与优化域名解析与上线与在互联网日益普及的今天,越来越
超逼真美女写真生成攻略:玩转AI工具,轻松获得你的专属AI女友!
限时免费,点击体验最近超火的AI生图神器,坐拥3000美女的大男主就是你! https://ai.sohu.com/pc/generate/textToImg?_trans_=030001_yljdaimn 在这个信息爆炸的时代,家人们是否曾经想过,能否不借助专业摄影师的帮助,通过科技的力量,
【首发】链接建设:打造网站权威性的高效策略
AI特质下的个性图片,仅为参考  在当今数字化的世界中,网站的权威性对于企业的成功至关重要。一个具有高权威性的网站不仅能够在搜索引擎中获得更高的排名,吸引更多的流量,还能增强用户对品牌的信任度,从而提高转化率。而链接建设,作
总榜发布:山东看变异性哮喘病较好的医院-济南哮喘病医院
变异性哮喘是哮喘的一种特殊类型,主要表现为咳嗽,而无明显喘息、气促等典型哮喘症状,易被误诊误治。以下是一些治疗变异性哮喘的有效方法:一、药物治疗支气管舒张剂:短效β₂受体激动剂如沙丁胺醇气雾剂,是缓解变异性哮喘咳嗽症状的常
全球首个无广告隐私型搜索引擎 Neeva 宣布关闭消费者业务,回应称获客困难
5 月 22 日消息,搜索服务商 Neeva 昨日宣布,将关闭其消费者搜索引擎业务,以此集中资源开发人工智能和大型语言模型。Neeva 公司创始人 Sridhar Ramaswamy 在回应关闭消费者搜索业务决定的文章中称:“获取用户真的很难。除了不同的经济环
搜狐浏览器 104.0.2 官方版
搜狐浏览器官方版是一款便捷使用的浏览器。搜狐浏览器官最新版用户可以在这里都是可以轻松的进行搜索需要的内容,不管是什么风格的新闻都是可以轻松的了解,操作起来特别的便捷,还有大量的功能等你去解锁。搜狐浏览器界面风格相当的精致养
次元幻境 云手机多开挂机
《次元幻境》是一款二次元RPG美少女战斗手游!次元幻境云手机软件可以大大提高您的挂机搬砖效率:多多云手机完全模拟真实手机环境,每一台专业云手机都是独立手机系统,允许用户在云手机里安装游戏、应用,24小时挂机托管!【次元幻境小号
相关文章
推荐文章
发表评论
0评