【发布时间】:2016-03-04 17:35:18
【问题描述】:
假设我有桌子
id|val
1 |1
2 |1
3 |2
4 |5
5 |2
6 |2
7 |2
如何获得这样的表格:
2 | 1 |2
3 | 2 |1
4 | 5 |1
7 | 2 |3
即表格,其中第三列是第二列中相似值的数量。
当然我可以使用 php 或 perl 代码来做到这一点,但我记得只使用 sql 变量是可行的。
【问题讨论】:
-
我不知道用什么逻辑来获取第二个表。
-
@GordonLinoff,第一列说明取值的最后位置。第二列表示要计算的次数,第三列表示出现的次数。
-
看。通过第二列,计算值的数量。假设您以 id=2 计数。在 id=2 处,您在第二列 1 中。如果您进入下一步 (id=3) 值而不是 2,则将一行 (1,2) 放在 2 为计数的位置。现在数 2,得到一个 2,所以放 (2,1)。下一个是 (5,1),之后你有 2 个中的 3 个,所以 (2,3)。现在更清楚了吗?
-
@arheops,您需要查询还是其他解决方案都可以?
-
我需要查询。其他解决方案(如程序或外部语言)我可以自己做。但我很确定可以查询(我自己在大学实验室做过)。