使用MySQL查询选择最接近的数值

这可能比我做的要容易,但是基本上我需要做的是选择列中具有最接近数字的行作为指定值。例如:

数据库中指定列中的3行的值列表:10、15、16

如果我指定我想要最接近14的行,它将选择15的行。

另外,如果有2+行相同的距离,则随机选择其中之一。

回答:

一种选择是遵循以下方式:

select   the_value,

abs(the_value - 14) as distance_from_test

from the_table

order by distance_from_test

limit 1

要选择随机记录,可以将其添加, rand()order

by子句中。这种方法的缺点是您不能从索引中得到任何好处,因为您必须对派生值进行排序distance_from_test

如果您有索引the_value并且放宽了对平局时结果随机的要求,则可以执行一对有限范围查询,以选择紧接测试值上方的第一个值和紧接测试值下方的第一个值值并选择最接近测试值的值:

(

select the_value

from the_table

where the_value >= 14

order by the_value asc

limit 1

)

union

(

select the_value

from the_table

where the_value < 14

order by the_value desc

limit 1

)

order by abs(the_value - 14)

limit 1

以上是 使用MySQL查询选择最接近的数值 的全部内容, 来源链接: utcz.com/qa/428283.html

回到顶部