mysql排名的實現

2021-09-25 08:23:08 字數 2503 閱讀 3882

首先我們先建立

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...