mysql5.7 mysql8窗口函数分组排序并在组内编号

mysql5.7 mysql8窗口函数分组排序并在组内编号,第1张

表结构

ROW_NUMBER() OVER (PARTITION BY category ORDER BY id) AS idx

含义: 按 category 分组, 组内按 id 排序, 组内排序的序号(行号)作为列 idx

ROW_NUMBER() 在 mysql8 才开始支持, 对于msqyl5.7或对应版本的MariaDB,相同功能的实现可以参考如下 sql

要点:

可以看到,两个结果,在分组变化的地方,idx开始了重新编号,且结果与 ROW_NUMBER() 一致.

假如产品表为 tb ,表中有产品编号字段, 销售表为 tb2有销售数量字段,他们通过产品id关联

如果是求所有销售数量的总和

select tb.产品编号,svm(销售数量) as 总销售数量

from the inner join tb2 on tb.产品id=tb2.产品id

假设

表名:

TEST;字段:

ID,

number;

1.

更新

TEST.number

为序列数

SET

@r

=

0

UPDATE

TEST

SET

number

=

@r

:=

IFNULL(@r,

0)

+

1

2.

查询

TEST.*

显示行号

SET

@r

=

0

SELECT

TEST.*,

@r:=IFNULL(@r,

0)

+

1

AS

rownum

FROM

TEST

ORDER

BY

ID


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/7291781.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-03
下一篇 2023-04-03

发表评论

登录后才能评论

评论列表(0条)

保存