从用户表中按 jifen_all 获取我的排名。
SELECT b.rank FROM
(
SELECT t.id, @rownum := @rownum + 1 AS rank
FROM (SELECT @rownum := 0) r,
(SELECT id FROM fa_bankgy_dsxx_user ORDER BY jifen_all DESC) AS t
) AS b WHERE b.id = 29605;
表
CREATE TABLE `fa_bankgy_dsxx_user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`nickname` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL,
`openid` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`avatar` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
`realname` varchar(24) COLLATE utf8mb4_unicode_ci NOT NULL,
`mobile` varchar(24) COLLATE utf8mb4_unicode_ci NOT NULL,
`province` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL,
`city` varchar(30) COLLATE utf8mb4_unicode_ci NOT NULL,
`area` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL,
`workunit` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,
`exchange_count` int(11) DEFAULT '0',
`dati_count` int(11) DEFAULT '0' COMMENT '答题次数',
`rank_fen` int(11) DEFAULT '0',
`jifen_all` int(255) DEFAULT '0', 累计积分数量
`jifen` int(11) NOT NULL DEFAULT '0',
`createtime` int(11) NOT NULL,
`updatetime` int(11) NOT NULL,
`deletetime` int(11) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `jifen_all` (`jifen_all`),
KEY `openid` (`openid`),
KEY `workunit` (`workunit`)
) ENGINE=MyISAM AUTO_INCREMENT=33259 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
jifen_all 加了索引,怎么避全表扫描又能取出排名?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.