Mysql 查询指定数据在查询数据列表中排名问题


前言

有个需求,要根据id查询宠物排名信息,参考一个老哥的SQL https://blog.csdn.net/liqi_q/article/details/83186413
但根据条件来查询,伪列生成的排名字段一直是1,OMG


一、排名SQL

SELECT b.ranking, b.id  FROM (SELECT a.* FROM 
(SELECT
    p.*,
    (@i :=@i + 1) AS ranking
FROM
    pms_member_pets p
    , (SELECT @i:=0) AS it
WHERE
    pets_type=1 and status=1 and community_id=1463447732923400192
ORDER BY
 like_num DESC) as a ) b
 WHERE b.id =1486013802255220736

二、问题排查

分析可能是数据库版本引起的问题,先查询数据库版本号

SELECT VERSION();

1. 版本5.6.50-log

能正常执行,返回结果符合预期

2. 版本8.0.24

就出现了上面的问题,根据条件查询出来的排名字段一直是1
稍微调整一下SQL即可

SELECT b.* FROM (
	SELECT a.* FROM (
		SELECT
				p.*,
				(@i :=@i + 1) AS ranking
		FROM
				pms_member_pets p
				, (SELECT @i:=0) AS it
		WHERE
				 pets_type=1 AND `status`=1 AND community_id=1463447732923400192
		ORDER BY
		 like_num DESC
	 ) AS a GROUP BY ranking 
 ) b 
 WHERE b.id = 1486013802255220736

根据group by 分组一下,再根据条件去查询

总结

诗词赏析

短歌行
作者:曹操

对酒当歌,人生几何!
譬如朝露,去日苦多。
慨当以慷,忧思难忘。
何以解忧?唯有杜康。
青青子衿,悠悠我心。
但为君故,沉吟至今。
呦呦鹿鸣,食野之苹。
我有嘉宾,鼓瑟吹笙。
明明如月,何时可掇?
忧从中来,不可断绝。
越陌度阡,枉用相存。
契阔谈讌,心念旧恩。
月明星稀,乌鹊南飞。
绕树三匝,何枝可依?
山不厌高,海不厌深。
周公吐哺,天下归心。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值