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
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)