MySQL查找最接近的匹配行

4

我认为这应该很简单,但我就是无法理解。

我有一个映射/查找表,其中包含两列。 Col1用于从Col2中查找值。

Col1是一个直接的INT列,其中的值按20递增,并从500开始。 因此,它具有像500、520、540等值。 每个这些值都映射到Col2中唯一的十进制值。

现在当我运行查询时,我会得到不是以20递增的Col1值。 因此,我需要查找Col2中值为524.25的映射。 在这种情况下,它应该匹配Col1中的值为520,并返回Col2中匹配的十进制值。 如果此值为530或更高,则应匹配540等。

希望这有意义。 提前感谢。

Vikram Goyal

1个回答

8

首先,您应该能够按差的绝对值对行进行排序(最佳匹配行的差异最小),然后取第一行的Col2

SELECT Col2
FROM your_table
ORDER BY ABS( Col1 - your_value )
LIMIT 1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接