在MySQL中查找类似数据

在MySQL中查找类似数据,mysql,similarity,Mysql,Similarity,我有一张天气统计表,例如: ---------------------- | day | temp | falls | |-----|------|-------| | 1 | 12 | 30 | | 2 | 18 | 0 | | 3 | 13 | 10 | ---------------------- 我想找到最相似的一天: Today: 14°C, 0mm falls Most similar day: 3 这仅在MySQL中是可能实现的吗?我

我有一张天气统计表,例如:

----------------------
| day | temp | falls |
|-----|------|-------|
|  1  |  12  |   30  |
|  2  |  18  |    0  |
|  3  |  13  |   10  |
----------------------
我想找到最相似的一天:

Today: 14°C, 0mm falls
Most similar day: 3
这仅在MySQL中是可能实现的吗?

我假设“相似”是指相似的温度和相似的下降

 SELECT day FROM weather ORDER BY ABS(temp - 14) + .2 * ABS(falls - 0) LIMIT 1
虽然
ABS(温度-14)+.2*ABS(下降-0)
可以调整。听着,落差(mm)的重量小于温度差(C)


例如,如果我们改为使用
ABS(temp-14)+ABS(falls-0)
,则将选择第二天。

您可以检查两个因素之间的绝对差异,将它们相加,并搜索可能的最小和

但您需要更精确地定义类似的

假设温度的重要性是下降的两倍,您将为
temp
指定一个因子2,为
falls
指定一个因子1。然后使用这种查询:

SELECT day 
FROM weather 
ORDER BY (
    2 * ABS(temp - 14) 
  + 1 * ABS(falls - 0)
) ASC
LIMIT 1

请定义类似的
。非常有趣。到目前为止有没有尝试过?我真的没有考虑到这个因素,这真的是一个很好的改进,它就像一个魅力。感谢zessx和Paul DraperI,他们觉得有义务指出,该查询没有选择第3天。目的是解释如何在这种情况下使用因子。设置这些因素返回到@Tomasz