SQL - 查找最接近X和Y的两列值的行

And*_*rej 5 sql proximity

我正在建立一个网站,人们可以根据他们的体重和身高获得一些信息.如何构建一个查询,它会给我一行,其中两个特定值最接近用户输入的值?

我在stackoverflow上找到了这个,这非常有帮助.我试图完成类似的事情,只有2个值为1.

Ric*_*iwi 3

如果体重和身高同等重要,可以使用这个(线性)

select top 1 *
from tbl
order by ABS(weight-@weight) + ABS(height-@height)
Run Code Online (Sandbox Code Playgroud)

更好的选择可能是在秤上权衡差异,例如将 0.01m (1cm) 的equal重要高度视为 1kg。两边也都平方,这样 5 厘米和 5 公斤的偏差就会被视为比 10 厘米和 0 公斤“更接近”。

(假设所有输入均以公斤和米为单位)

select top 1 *
from tbl
order by ABS(weight-@weight)^2 + (ABS(height-@height)*100)^2
Run Code Online (Sandbox Code Playgroud)