mysql实现分组排序
来源:互联网 发布:mac os x 10.11.6 dmg 编辑:程序博客网 时间:2024/05/21 06:42
CREATE
TABLE
user_orders (orders_id
INT
UNSIGNED
NOT
NULL
,
user_id
INT
UNSIGNED
NOT
NULL
,
add_time
INT
UNSIGNED
NOT
NULL
,
PRIMARY
KEY
(orders_id),
KEY
(user_id),
KEY
(add_time)
)ENGINE=INNODB
DEFAULT
CHARSET utf8 COMMENT
'mysql实现分组排序测试表'
;
INSERT
INTO
`user_orders` (`orders_id`, `user_id`, `add_time`)
VALUES
(
'1'
,
'1'
,
'1'
);
INSERT
INTO
`user_orders` (`orders_id`, `user_id`, `add_time`)
VALUES
(
'2'
,
'1'
,
'2'
);
INSERT
INTO
`user_orders` (`orders_id`, `user_id`, `add_time`)
VALUES
(
'3'
,
'1'
,
'3'
);
INSERT
INTO
`user_orders` (`orders_id`, `user_id`, `add_time`)
VALUES
(
'4'
,
'2'
,
'1'
);
INSERT
INTO
`user_orders` (`orders_id`, `user_id`, `add_time`)
VALUES
(
'5'
,
'2'
,
'2'
);
INSERT
INTO
`user_orders` (`orders_id`, `user_id`, `add_time`)
VALUES
(
'6'
,
'2'
,
'3'
);
INSERT
INTO
`user_orders` (`orders_id`, `user_id`, `add_time`)
VALUES
(
'7'
,
'3'
,
'1'
);
INSERT
INTO
`user_orders` (`orders_id`, `user_id`, `add_time`)
VALUES
(
'8'
,
'3'
,
'2'
);
INSERT
INTO
`user_orders` (`orders_id`, `user_id`, `add_time`)
VALUES
(
'9'
,
'3'
,
'3'
);
SELECT
orders_id,user_id,add_time,rank
FROM
(
SELECT
@rownum:=@rownum+1
AS
rownum,# 行号
IF(@x=uo.user_id,@rank:=@rank+1,@rank:=1) rank,#处理排名,如果@x等于user_id,则表示@x被初始化,将@rank自增1
@x:=uo.user_id, # 初始化@x,@x为中间变量,在rank之后初始化,所以,rank初始化时,@x为
null
或者是上一个user_id的值
orders_id,user_id,add_time
FROM
user_orders uo,
(
SELECT
@rownum:=0,@rank:=0) init # 初始化信息表
ORDER
BY
user_id
ASC
, add_time
DESC
)result
WHERE
rank=2
重点:关键在于@x如何赋值。了解@x的赋值之后,立马就能明白rank(名次)的由来。
阅读全文
0 0
- mysql实现分组排序
- mysql分组排序方案
- mysql分组排序查询
- mysql 分组排序
- mysql分组查询 排序
- mysql分组查询排序
- MySQL分组排序
- mysql分组排序
- mysql 分组排序
- mysql 分组排序
- mysql分组排序
- mysql分组排序
- mysql排序分组
- MYSQL-实现ORACLE- row_number() over(partition by ) 分组排序功能.
- MYSQL-实现ORACLE- row_number() over(partition by ) 分组排序功能
- mysql 实现row_number() over(partition by ) 分组排序功能
- MYSQL 实现 MSSQL row_number() 类似的分组排序
- mysql实现分组排序,获取第N条数据
- [Leetcode] 253. Meeting Rooms II 解题报告
- React Native 用法介绍
- 线程与内核绑定
- 游戏编程入门(10):播放数字声音效果
- android验证通用类
- mysql实现分组排序
- TensorFlow学习---实现mnist手写数字识别
- VC 屏蔽Alt组合键
- vs2012 提示 未能正确加载 "Visual C++ Language Manager Package
- 为什么说DOM操作很慢
- 双系统(Windows+ubuntu)下如何给Ubuntu系统增加磁盘空间
- Centos 6.9 Install httpd-2.4.26
- 关于H5单字符输入框组的介绍
- 程序员生存定律