【发布时间】:2021-04-23 09:10:24
【问题描述】:
我想这样做:
SELECT * , ROW_NUMBER() OVER (PARTITION BY Id ORDER BY score DESC, creationDate DESC) as num
FROM DB
ORDER BY score DESC, creationDate DESC
但在 MariaDB 10.1 中,row_number 不可用。我设法做到了:
SELECT db2.*,
(@rn := IF(@Id = Id, @rn + 1,
IF(@Id := Id, 1, 1)
)
) as num
from (SELECT *
FROM DB
ORDER BY Id DESC , score DESC, creationDate DESC
) db2 CROSS JOIN
(SELECT @rn := 0, @Id := '') params
但结果不一样。我想要这个:
1 1.0
1 2.0
1 3.0
1 4.0
1 5.0
1 6.0
1 7.0
1 8.0
2 1.0
2 2.0
6 1.0
6 2.0
6 3.0
6 4.0
8 1.0
10 1.0
10 2.0
10 3.0
12 1.0
14 1.0
15 1.0
16 1.0
16 2.0
16 3.0
16 4.0
但我得到了:
6 1.0
1 1.0
1 2.0
1 4.0
1 3.0
1 5.0
1 6.0
1 1.0
2 2.0
2 1.0
1 7.0
8 1.0
6 2.0
10 1.0
10 1.0
10 1.0
所以问题是:对于 Id = 1,它似乎有效,但我得到了 2 次 1 作为 num。而对于其他 ID,比如 10,它根本不起作用......我不明白为什么
谢谢
【问题讨论】: