【发布时间】:2020-04-02 11:34:45
【问题描述】:
我正在尝试创建某种水果的列表。我想创建一个临时列 increment_value 来计算按类型插入的水果数量。
我有这张水果桌子:
+----------+------------+
| fruit_id | fruit_name |
+----------+------------+
| 5 | Apple |
| 8 | Banana |
| 8 | Banana |
| 5 | Apple |
| 5 | Apple |
+----------+------------+
期望的结果:
+----------+------------+-----------------+
| fruit_id | fruit_name | increment_value |
+----------+------------+-----------------+
| 5 | Apple | 1 |
| 8 | Banana | 1 |
| 8 | Banana | 2 |
| 5 | Apple | 2 |
| 5 | Apple | 3 |
+----------+------------+-----------------+
我尝试使用虚拟表但失败:DEMO
如何获得我想要的桌子?
【问题讨论】:
-
哪个 MySQL 版本?
-
为什么要存储几个相等的行?请考虑使用计数列。
-
@jarlh 无关版本。如果 5.7 更好
-
@AlbertoMoro 相反,版本非常重要。只有 MySQL 8.0 提供了具有Window functions 的真正解决方案,例如 ROW_NUMBER、RANK 或 DENSE_RANK。在所有以前的版本中,您必须使用 hack,例如增加变量
-
所以,这就是你想要做的。那边是你尝试过的。伟大的。但问题是什么?