python - MySQL选择字段的元素数

标签 python mysql sql

我正在尝试从 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/

相关文章:

python - 合并 PDF,同时保留自定义页码(也称为页面标签)和书签

python - 使用 matplotlib.pyplot 添加轴时如何保留分辨率?

mysql - 如何加快 MariaDB 中数据子集的选择

mysql - 如何进行条件平均?

mysql - 表名作为字段

python - 为什么我的代码不根据字典解码加密字符串?

python - RabbitMq 连接到 127.0.0.1 :5672 Failed

php - Mysql 到 mysqli php

sql - 没有聚合函数的 GROUP BY 子句的任何原因?

sql - 将集合更新、插入或删除到表中