我应该有这张table吗
id | value
----------
1 | 1
2 | 1
3 | 2
4 | 4
5 | 7
6 | 10
7 | 12
8 | 13
我想知道如何得到这样一个结果,即每行都有一个附加值,即值在该行值的1个单位内的行数。话虽如此,答案应该是这样的
id | value | count
--------------
1 | 1 | 3
2 | 1 | 3
3 | 2 | 3
4 | 4 | 1
5 | 7 | 1
6 | 10 | 1
7 | 12 | 2
8 | 13 | 2
我的描述可能令人困惑,但这是我能想到的最好的解释。我花了几个小时试图找到一种方法来进行这种合并,但我还是被卡住了。
我希望有人能告诉我,我能做些什么,使这在mysql中发生(这个问题是一个简单的编程数组问题的转换,但我无法在mysql中做到这一点)
1条答案
按热度按时间enyaitl31#
一个选项使用联接,后跟聚合:
演示
请注意,我们需要
GROUP BY
两个id
以及value
. 原因是我们希望按原始表中的每条记录进行逻辑聚合,这由id
以及value
柱。如果我们只按value
,则会得到不正确的计数,因为1
将与自联接中的多个其他记录匹配。