首先我們先建立
create table `user_info` (
`id` bigint(20) not null auto_increment comment '自增id',
`nick_name` varchar(255) default null comment '暱稱',
`create_date` datetime default current_timestamp comment '建立時間',
primary key (`id`)
) engine=innodb default charset=utf8mb4 comment='使用者表';
--插入資料
insert into `user_info` values (null, '張三', 1, '2019-07-17 17:01:37');
insert into `user_info` values (null, '李四', 2, '2019-07-17 17:01:39');
insert into `user_info` values (null, '王五', 2, '2019-07-17 17:01:39');
insert into `user_info` values (null, '趙六', 3, '2019-07-17 17:01:40');
insert into `user_info` values (null, '田七', 4, '2019-07-17 17:01:40');
insert into `user_info` values (null, '王八', 1, '2019-07-17 17:01:40');
insert into `user_info` values (null, '常九', 6, '2019-07-17 17:01:42');
insert into `user_info` values (null, '吳十', 5, '2019-07-17 17:01:42');
insert into `user_info` values (null, '孫十一', 7, '2019-07-17 17:01:43');
insert into `user_info` values (null, '錢十二', 8, '2019-07-17 17:01:43');
insert into `user_info` values (null, '周十三', 8, '2019-07-17 17:01:47');
insert into `user_info` values (null, '鄭十四', 10, '2019-07-17 17:01:47');
insert into `user_info` values (null, '呂十五', 2, '2019-07-17 17:01:50');
insert into `user_info` values (null, '林十六', 5, '2019-07-17 17:01:52');
並列排名sql
-- 分頁不影響排名
select
nick_name as nickname,
credit as credit,
ranking as 'rank'
from
( select
nick_name,
credit,
@currank :=
if (
@prevrank = credit,
@currank,
@incrank
) as 'ranking',
@incrank := @incrank + 1,
@prevrank := credit
from
user_info,
( select
@currank := 0,
@prevrank := null,
@incrank := 1
) rorder by
credit desc
) alimit 0,5
不並列排名
-- 不並列排名
select
nick_name as nickname,
credit as credit,
ranking as 'rank'
from
( select
nick_name,
credit,
@currank := @currank + 1 as 'ranking',
@incrank := @incrank + 1,
@prevrank := credit
from
user_info,
( select
@currank := 0,
@prevrank := null,
@incrank := 1
) rorder by
credit desc
) alimit 0,5
mysql實現排名
心血來潮刷了一波leetcode,遇見個有意思的sql題目。題目連線 編寫乙個 sql 查詢來實現分數排名。如果兩個分數相同,則兩個分數排名 rank 相同。請注意,平分後的下乙個名次應該是下乙個連續的整數值。換句話說,名次之間不應該有 間隔 id score 1 3.50 2 3.65 3 4.0...
mysql 排名 MySQL用變數實現排名
mysql 8.0版本用視窗函式就可以實現排名,有三種方式,對相同值的處理不同 以上區別會在文末舉例,本文主要討論用變數實現排名 5.5版本用不了視窗函式 至少排序視窗用不了,其他的沒試過 那麼對於要顯示排名的需求就得想其他辦法啦,看網上的資料可以用變數來實現,來看看 首先建表並插入資料 資料資料來...
mysql 排名函式 MySQL排名函式實現
資料庫準備 建立乙個分數表s score create table s score id int not null auto increment,score int not null default 0,name varchar 20 character set utf8mb4 null,prima...