我正在使用mysql Ver 14.14 Distrib 5.7.21, for Linux (x86_64)
.
我有一个表推荐:
CREATE TABLE `referrals` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`referred_by` bigint(20) unsigned DEFAULT NULL,
`referral_token` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`email` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
`created_at` timestamp NULL DEFAULT NULL,
`updated_at` timestamp NULL DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `referrals_email_unique` (`email`)
);
在表格中,您基本上插入了人和推荐人。
我创建了以下排行榜:
select
referred_by,
count(referred_by) as referred_by_count,
@curRank := @curRank + 1 AS rank
from
referrals r,
(
SELECT
@curRank := 0) o
group by
referred_by
order by
referred_by_count DESC;
这给了我:
由......推荐 | 参考计数 | 秩 |
---|---|---|
10 | 3 | 3 |
2 | 2 | 1 |
3 | 2 | 2 |
13 | 2 | 5 |
11 | 2 | 6 |
15 | 1 | 8 |
12 | 1 | 9 |
4 | 1 | 4 |
9 | 1 | 7 |
但是,我想得到:
由......推荐 | 参考计数 | 秩 |
---|---|---|
10 | 3 | 1 |
2 | 2 | 2 |
3 | 2 | 3 |
13 | 2 | 4 |
11 | 2 | 5 |
15 | 1 | 6 |
12 | 1 | 7 |
4 | 1 | 8 |
9 | 1 | 9 |
我使用 faker php 插件创建了以下dbfiddle 。
我尝试使用 mysqlRANK()
功能。但是,我正在努力如何正确使用它。
感谢您的回复!