ZBLOG

mysql 5.7 实现分组row_number 并给出例子

MySQL 5.7 可以通过使用变量实现分组 row_number。实现方法如下:

SET @num := 0, @group := '';

SELECT *,
    @num := IF(@group = group_col, @num + 1, 1) AS row_number,
    @group := group_col AS dummy
FROM table_name
ORDER BY group_col, order_col;

其中,group_col 是要分组的列名,order_col 是排序的列名。

例如,假设有以下表格:

id name department
1 Amy HR
2 Bob IT
3 Cate HR
4 Dave Marketing

如果想按照 department 分组,并为每个组内的行添加一个序号,可以使用以下查询语句:

SET @num := 0, @dept := '';

SELECT *,
    @num := IF(@dept = department, @num + 1, 1) AS row_number,
    @dept := department AS dummy
FROM employee
ORDER BY department, name;

执行结果如下:

id name department row_number
1 Amy HR 1
3 Cate HR 2
2 Bob IT 1
4 Dave Marketing 1

可以看到,同部门的员工被正确地分组,并且在组内根据 name 排序,同时每个组内的员工都获得了一个 row_number 序号。

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=1890

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?