前言
有个需求,要根据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 分组一下,再根据条件去查询
总结
诗词赏析
短歌行
作者:曹操
对酒当歌,人生几何!
譬如朝露,去日苦多。
慨当以慷,忧思难忘。
何以解忧?唯有杜康。
青青子衿,悠悠我心。
但为君故,沉吟至今。
呦呦鹿鸣,食野之苹。
我有嘉宾,鼓瑟吹笙。
明明如月,何时可掇?
忧从中来,不可断绝。
越陌度阡,枉用相存。
契阔谈讌,心念旧恩。
月明星稀,乌鹊南飞。
绕树三匝,何枝可依?
山不厌高,海不厌深。
周公吐哺,天下归心。