gpt4 book ai didi

mysql - “MYSQL: How do i put numbering? ”

转载 作者:行者123 更新时间:2023-11-29 15:34:10 24 4
gpt4 key购买 nike

我正在尝试找到一个 MySQL 查询,它将对每个 DISTINCT 值进行编号。

id         name
----- ------
1 Mark
2 Mike
3 Paul
4 Mike
5 Mike
6 John
7 Mark

预期结果。像这样的东西

count       name
----- ------
1 Mark
2 Mark
1 Mike
2 Mike
3 Mike
1 John
1 Paul

最佳答案

如果您运行的是 MySQL 8.0,则只需使用 row_number() 即可:

select
row_number() over(partition by name order by id) `count`,
name
from mytable
order by name, `count`

查询依赖列 id 对记录进行排序,因为它似乎是唯一的(如果没有值在组内唯一的列,则具有相同名称的记录的排序是不可预测的)。

在早期版本中,可以使用变量来模拟row_number():

select 
case when @name = name then @cnt := @cnt + 1 else @cnt := 1 end `count`,
@name := name
from
(select name from mytable order by name, id) t
cross join (select @cnt := 1, @name := null) x
order by name, `count`

<强> Demo on DB Fiddle - 两个查询都返回:

| ----- | -------------- |
| 1 | John |
| 1 | Mark |
| 2 | Mark |
| 1 | Mike |
| 2 | Mike |
| 3 | Mike |
| 1 | Paul |

关于mysql - “MYSQL: How do i put numbering? ”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58422770/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com