当值只是有点随机时,在mysql表中查找类似的项


Find similar items in mysql table when values are just a bit random

我有实验室分析结果数据库。由于分析的性质,结果只是有点随机-这在现实世界中是正常的。所有结果都以整数形式存储在数据库中(我们以ppm -百万分之一保存结果)。问题是,我想找到类似的(可能是相同的)材料分析了几次。数据库是这样的:

id  |v1  |v2  |v3  |v4  |... |vn
----|----|----|----|----|----|----
1   |4560|5600|3333|  56|    |0
2   |4575|5583|3354|  67|    |0
3   |4565|4333|3332|  60|    |0
4   |   0|5583|3333|  60|    |0

id为1和2的材料相同,id为3和4的材料是唯一的。

我想给出公差+-30或其他东西来消除结果随机性并找到相同的材料。如果每个列的容差值都是单独的,那就太好了。

简化。如何要求mysql返回类似的整数与值+-一些错误值?

您肯定不希望使用SQL执行此操作。

本质上,你所做的就是计算数据库定义的图形的连接组件,其中两行如果在你定义的公差范围内,则有一条边连接它们。

假设您的数据集足够小,可以装入内存,如果它是在您的实验室中进行的样本测试的结果,那么您最好的选择是将其全部读取,然后使用合适的库来计算连接的组件。例如,在Java中,您可以使用JGraphT;如果你需要在PHP中做,那么我相信也会有可用的图形库。

在高端,对于海量数据集,有库可以在Spark集群上完成…