Mysql:根据多列查找大多数相似的数字行

时间:2017-05-10 08:26:25

标签: mysql

这是我在这里的第一个问题,我会尽力保持清醒和事实。我用google搜索了很长时间但从未得到我想要的结果。我的Mysql知识并不是最好的,也许这就是为什么我无法让this answer使用我想要的功能。

首先,这里是我的Mysql数据

user | speed | strength | stamina | precision
---------------------------------------------
1    | 4     | 3        | 5       | 2
2    | 2     | 5        | 3       | 4
3    | 3     | 4        | 6       | 3

问题

我想要一个Mysql查询,找到与特定用户最相似的行。例如,如果我想查看与用户1最相似的人,我希望它找到用户3.用户1和2总共具有相同的值(14)但是1和3更相似,请参阅图为更好的观点。

enter link description here

如果有人知道我应该看看Mysql的功能,或者你有什么想法,我会很高兴和感激。

2 个答案:

答案 0 :(得分:0)

我认为你的要求转化为功能将是"用户能力水平差异的平均值的最小值"

如果是这种情况,可以像SQL一样在SQL中进行翻译

select  t2.user,
        (
            abs(t1.speed - t2.speed) +
            abs(t1.strength - t2.strength) +
            abs(t1.stamina - t2.stamina) + 
            abs(t1.precision - t2.precision)
        ) / 4 as diff_avg
from    users t1
cross join
        users t2
where   t2.user <> t1.user and
        t1.user = 1 /* the starting user id goes here */
order by 2 asc
limit 1

答案 1 :(得分:0)

最精确的数字解决方案是使用配置文件相似度-通过将具有最高相关系数的行与User1

我一直在寻找在MySQL中执行此操作的方法,但似乎找不到方法。希望有人对此有足够的了解以帮助我们