mysql groupby后的分组结果,新增一列,每个分组从1开始递增
时间: 2023-10-24 20:19:02 浏览: 42
可以使用MySQL中的ROW_NUMBER()函数来实现:
```
SELECT *, ROW_NUMBER() OVER(PARTITION BY 分组列 ORDER BY 排序列) as 序号
FROM 表名
GROUP BY 分组列;
```
例如,对于以下数据表:
```
id | name | category | amount
------------------------------
1 | A | X | 100
2 | B | Y | 200
3 | C | X | 150
4 | D | Z | 50
5 | E | Y | 300
```
如果要按照category列进行分组,并用新增的序号列记录每个分组的序号,可以如下查询:
```
SELECT *, ROW_NUMBER() OVER(PARTITION BY category ORDER BY id) as 序号
FROM 表名
GROUP BY category;
```
结果如下:
```
id | name | category | amount | 序号
-------------------------------------
1 | A | X | 100 | 1
3 | C | X | 150 | 2
2 | B | Y | 200 | 1
5 | E | Y | 300 | 2
4 | D | Z | 50 | 1
```
注意,由于GROUP BY会进行分组,因此需要使用ROW_NUMBER()函数来对每个分组进行递增编号。