gpt4 book ai didi

python - MySQL选择字段的元素数

转载 作者:太空宇宙 更新时间:2023-11-03 12:01:20 25 4
gpt4 key购买 nike

我正在尝试从 MySQL 中获取一些结构如下的数据

id  name        url
1 foo SOMEURL
2 foo SOMEURL
3 foo SOMEURL
4 foo SOMEURL
5 bar SOMEURL
6 bar SOMEURL
7 bar SOMEURL
8 bar SOMEURL
9 oop SOMEURL
10 oop SOMEURL
11 dpk SOMEURL
12 more SOMEURL

我想获取 name 的项目数,例如从 0 开始

id  name        url         number
1 foo SOMEURL 0
2 foo SOMEURL 1
3 foo SOMEURL 2
4 foo SOMEURL 3
5 bar SOMEURL 0
6 bar SOMEURL 1
7 bar SOMEURL 2
8 bar SOMEURL 3
9 oop SOMEURL 0
10 oop SOMEURL 1
11 dpk SOMEURL 0
12 more SOMEURL 0

但我不知道该怎么做,我只做了 GROUP_CONCAT url 字段并按 name 分组,所以我得到了项目总数,但不是我想要的(在此处询问)

澄清一下,我的表上只有三个字段,分别是id nameurlnumber 列是通过我要求的查询生成的。我希望该数字从 0 开始,但它不能以任何数字开始,它只需要在每个不同的名称上重新设置,所以我对每个名称都进行了逐行计数……我认为这个例子非常清楚。

最佳答案

如果你需要用mysql来做,那么你可以使用动态变量。

mysql> create table test (id int, name varchar(100));
Query OK, 0 rows affected (0.21 sec)

mysql> insert into test values (1,'foo'),(2,'foo'),(3,'foo'),(4,'bar'),(5,'oop'),(6,'bar'),(7,'oop');
Query OK, 7 rows affected (0.02 sec)
Records: 7 Duplicates: 0 Warnings: 0

select id,
name,
number
from (
select *,
@rn := if(@prev = name, @rn+1,0) as number ,
@prev:=name
from test,(select @rn:=0,@prev:='')r order by name
)t ;

输出将是

+------+------+--------+
| id | name | number |
+------+------+--------+
| 4 | bar | 0 |
| 6 | bar | 1 |
| 1 | foo | 0 |
| 2 | foo | 1 |
| 3 | foo | 2 |
| 5 | oop | 0 |
| 7 | oop | 1 |
+------+------+--------+

这将显示按名称排序的数据。

关于python - MySQL选择字段的元素数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29072960/

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