实现排名功能,sql执行结果 mysql 和 tidb 表现不一致

tidb版本:TiDB-v3.0.13
mysql版本:5.7.25
sql:


select * from (
select id, 
  @curRank := IF(@prevRank = a.id, @curRank, @incRank) as rankIdx,
  @incRank := @incRank + 1,
  @prevRank := a.id
        from (select 1 as id union select 2 as id) a,
(SELECT @curRank := 0, @incRank :=1, @prevRank := NULL) r
order by a.id desc ) s
limit 1,1;

mysql下返回:

image

tidb下返回:

image

请问为什么tidb下返回的rankIdx是1而不是2啊

我们查下,会尽快答复,多谢

感谢回复,请问有眉目了吗?:grin:

还没有,有结果,会反馈的,多谢

您好,这个问题暂时无法解决,能否考虑使用 window function 来实现,多谢

可以,但是能否告知具体原因呢?

变量实现上,此功能暂时未完全实现,如果您对代码感兴趣,可以在github 提问此问题,或者帮助我们完善,多谢。