排序与编号与mysql不兼容

【功能】:商家统一按近30天销量sales_tc_30 倒序排序后给排序编号;rowNo为排序号从100开始 0-99保留给人工配置,,无销量999999999
SELECT
a.id ,
if(a.sales_tc_30=0,999999999,(@rowNum1 :=@rowNum1 + 1)) AS rowNo
,sales_tc_30
FROM
ts_shangjia a,
(SELECT @rowNum1 := 100) b
ORDER BY
a.sales_tc_30 DESC

【问题】 当前遇到的问题:
在mysql上执行,rowNo能实现需求,但是在tidb上执行,rowNo的乱了,没看出什么规律.
请问有什么办法实现这个功能么?

【TiDB 版本】 5.01

用开窗函数ROW_NUMBER()试一下排序,因为TiDB的变量是没有显式指定类型的

由于 MySQL 对于用户变量的行为没有明确定义,因此 TiDB 中用户变量的行为不保障与 MySQL 一致。
类似的需求可以通过 TiDB 中的窗口函数去实现,详情参考文档 还在用变量去实现多维度分组排序吗?你 out 了! - 技术文章 - AskTUG

问题已解决,感谢!

采用哪种方式解决的?分享一下解决方案,或者点选 对我有用 方便后来的同学们快速定位。:handshake: