在MySQL中通过分区排名()

我完全为在mysql中从rank()over(按x分区,按y desc排序)创建新列“ LoginRank”而感到困惑。

从SQL Server,我将编写以下查询,以创建按“登录”分组并按“ id”排序的“ Loginrank”列。

select ds.id, 

ds.login,

rank() over(partition by ds.login order by ds.id asc) as LoginRank

from tablename.ds

我有下表。

create table ds (id int(11), login int(11))

insert into ds (id, login)

values (1,1),

(2,1),

(3,1),

(4,2),

(5,2),

(6,6),

(7,6),

(8,1)

我尝试将许多现有的mysql修复程序应用到我的数据集,但仍然存在问题。

任何帮助是极大的赞赏。谢谢!

回答:

请尝试以下查询:-MySql不支持Rank()函数。

select result.id,result.login,result.rank from (

SELECT id,

login,

IF(login=@last,@curRank:=@curRank,@curRank:=@_sequence) AS rank,

@_sequence:=@_sequence+1,

@last:=login

FROM ds , (SELECT @curRank := 1, @_sequence:=1, @last:=0) r

ORDER BY id asc) as result;

希望对您有帮助!

以上是 在MySQL中通过分区排名() 的全部内容, 来源链接: utcz.com/qa/412931.html

回到顶部