【发布时间】:2020-06-12 12:05:39
【问题描述】:
我知道 MySQL 中没有序列生成器。即使我想知道是否有办法实现这一点:
我有以下选择,我需要在哪里生成一个带计数器的字段
mysql> select name, age, hobby, ' ' counter from t order by name;
+------------+------+--------------+---------+
| name | age | hobby | counter |
+------------+------+--------------+---------+
| Mark | 21 | Soccer | |
| Mark | 21 | Football | |
| pizzipizzi | 7 | cronchcronch | |
| Steve | 23 | Basketball | |
| Steve | 23 | Coding | |
| Steve | 23 | Soccer | |
+------------+------+--------------+---------+
5 rows in set (0.01 sec)
所需的结果集(每个新名称的计数器重置为 0):
+------------+------+--------------+---------+
| name | age | hobby | counter |
+------------+------+--------------+---------+
| Mark | 21 | Soccer | 0 |
| Mark | 21 | Football | 1 |
| pizzipizzi | 7 | cronchcronch | 0 |
| Steve | 23 | Basketball | 0 |
| Steve | 23 | Coding | 1 |
| Steve | 23 | Soccer | 2 |
+------------+------+--------------+---------+
任何帮助将不胜感激。
【问题讨论】:
-
@Strawberry 同一个
name中的顺序无关紧要。我只需要计数器从具有相同name的每个行子集中的 0 重新开始。 -
这个计数器应该解决什么问题?
-
你的mysql版本是多少?
-
@Repox 我需要生成像
0.jpg,1.jpg,..这样的文件名。name在我的真实场景中(上面只是一个例子)是目录名。我知道我可以以编程方式执行此操作,但我认为直接从查询中获取这些值更方便。 -
@Strawberry 更正了示例,结果中的第三行之前是手动添加的。