这是我在这里的第一个问题,我会尽力保持清醒和事实。我用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更相似,请参阅图为更好的观点。
如果有人知道我应该看看Mysql的功能,或者你有什么想法,我会很高兴和感激。
答案 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中执行此操作的方法,但似乎找不到方法。希望有人对此有足够的了解以帮助我们