首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >与MYSQL中的给定行相比,使用简单公式查找最近的行?

与MYSQL中的给定行相比,使用简单公式查找最近的行?
EN

Stack Overflow用户
提问于 2014-10-26 04:20:56
回答 1查看 68关注 0票数 1

在一个数学公式中,我要计算不同或相似的,等于sqrt(s1 - t1)^2,所以种子行的Value1和比较行的Value1之间的差的平方根,平方。其中S1等于种子行的value1T1等于比较行的value1

若要计算种子行与比较行的总体相似性或差异:

代码语言:javascript
复制
[sqrt(s1-t1)^2]+[sqrt(s2-t2)^2]+[sqrt(s3-t3)^2]+... = Similarity

例如,使用下面的表,ID1是种子行,Id2是比较行,然后是ID3,然后是id4,等等都是下面的比较行。

代码语言:javascript
复制
[sqrt(3-1)^2]+[sqrt(4-5)^2]+[sqrt(3-3)^2]+[sqrt(5-5)^2]+[sqrt(0-4)^2]+[sqrt(1-1)^2]
+[sqrt(3-2)^2]+[sqrt(4-4)^2] = 2 + 1 + 0 + 0 + 4 + 0 +1 + 4 = 12

从名单上看,

代码语言:javascript
复制
ID1 to ID2: 2 + 1 + 0 + 0 + 4 + 0 + 1 + 4 = 12
ID1 to ID3: 1 + 1 + 1 + 4 + 4 + 0 + 2 + 1 = 14
ID1 to ID4: 0 + 0 + 0 + 3 + 1 + 1 + 0 + 1 = 6
ID1 to ID5: 1 + 0 + 0 + 4 + 0 + 4 + 3 + 3 = 15 

因此,根据这个公式,确定了行ID4与行ID1的最佳匹配,因为它的数值最低。

代码语言:javascript
复制
ID   |  Value1  | Value2  | Value3 | Value4 | Value5 | Value6 | Value7 | Value8 |
----------------------------------------------------------------------------------
1    |    3     |    4    |    3   |    5   |    0   |    1   |   3    |    4   |
2    |    1     |    5    |    3   |    5   |    4   |    1   |   2    |    4   |
3    |    4     |    3    |    2   |    1   |    4   |    1   |   1    |    5   | 
4    |    3     |    4    |    3   |    2   |    1   |    2   |   3    |    3   | 
5    |    2     |    4    |    3   |    1   |    0   |    5   |   0    |    1   |

我正在使用PHP和MySQL,我想知道如何实现上述解释?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-26 10:56:06

为了找到与特定行最近的行,可以使用如下查询,其中每一行都连接到种子行,结果按计算的差异排序:

代码语言:javascript
复制
SELECT t2.*, ABS(t1.v1-t2.v1)+ABS(t1.v2-t2.v2)+ABS(t1.v3-t2.v3) AS diff
FROM (SELECT * FROM tbl WHERE id=1) AS t1
JOIN tbl AS t2 ON t1.id <> t2.id
ORDER BY diff;

如果您想找出每一对行之间的差异,这样的查询就可以:

代码语言:javascript
复制
SELECT t1.id AS t1_id, t2.id AS t2_id,
       ABS(t1.v1-t2.v1)+ABS(t1.v2-t2.v2)+ABS(t1.v3-t2.v3) AS diff
FROM tbl AS t1
INNER JOIN tbl AS t2 ON t1.id <> t2.id
ORDER BY t1.id, diff;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26569767

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档