当前位置: 首页 > 面试题库 >

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

林君博
2023-03-14
问题内容

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

数据库中指定列中的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中的选择查询的问题 我有两个不同的表,我想获得一定的结果 我使用了COUNT方法,该方法只给我结果(> = 1) 但实际上,我想使用包含零的所有计数怎么做? 我的查询是: 第一张桌子:Content_hits 第二张表:Content_tag 结果但不完整 例如:tag_id = 1的Subsrciber6应该具有count(*)= 0 问题答案: 现在,您已经进

  • 问题内容: 我正在尝试选择每个用户的最新付款。我现在的查询选择了用户的第一笔付款。即,如果用户进行了两次付款,并且s分别为10和11,则查询将选择具有付款ID 10而不是11的信息的用户。 我已添加,但查询似乎忽略了它,仍然选择了第一笔付款。 所有帮助表示赞赏。谢谢。 问题答案: 你要分组最大值 ; 本质上,将付款表分组以标识最大记录,然后将结果与其自身重新结合以获取其他列: 请注意,根据您的应用

  • 问题内容: 我正在寻找一种借助Elasticsearch查找最近价格/数量的可能性。问题是我没有范围。我要实现的是,结果按最近距离排序。根据示例搜索查询,我的索引包含3个具有以下价格(数字)的文档:45、27、32 给定数字与我的搜索值29的“距离”为45-29 = 16 | 27-29 = -2 | 32-29 = 3,所以我希望搜索结果是按“距离”评分的,该数字距离给定价格不远。 搜索查询示例

  • 我想在hibernate中选择最大日期,但出现以下错误: Java语言sql。SqlSyntaxerRorexException:ORA-00932:不一致的数据类型:预期的时间戳得到的数字 查询是: 数据库是oracle。数据库中该字段的类型为时间戳(6)

  • 问题内容: 嗨,我有一个带有日期字段和一些其他信息的表。我想选择过去一周(从星期日开始的一周)中的所有条目。 表值: 我想选择上周的所有ID,预期输出为5、6、8 (ID 2不在上周,ID 15在本周。) 怎么写和SQL Query相同。 问题答案:

  • 本文向大家介绍使用MySQL子查询选择年龄最大的所有用户?,包括了使用MySQL子查询选择年龄最大的所有用户?的使用技巧和注意事项,需要的朋友参考一下 让我们首先创建一个表- 使用插入命令在表中插入一些记录- 使用select语句显示表中的所有记录- 这将产生以下输出- 以下是查询以选择具有最大年龄值的所有用户- 这将产生以下输出-