MySQL находит ближайшую подходящую строку - PullRequest
4 голосов
/ 29 января 2010

Я думал, что это будет достаточно просто, но я просто не могу разобраться с этим.

У меня есть таблица сопоставления / поиска с двумя столбцами. Col1 используется для поиска значений из Col2.

Col1 - это прямой столбец INT со значениями в нем, которые увеличиваются на 20 и начинаются с 500. Таким образом, он имеет значения, такие как 500, 520, 540 и т. Д. Каждое из этих значений отображается в уникальные десятичные значения в Col2.

Теперь, когда я запускаю запросы, я получаю значения для Col1, которые не с шагом 20. Поэтому меня попросят найти сопоставление из Col2 для значения, такого как 524.25. В этом случае он должен соответствовать значению в Col1 для 520 и возвращать соответствующее десятичное значение из Col2. Если это значение было 530 или более, оно должно соответствовать 540 и т. Д.

Надеюсь, это имеет смысл. Заранее спасибо.

Викрам Гоял

1 Ответ

8 голосов
/ 29 января 2010

Вы должны иметь возможность сначала отсортировать строки по абсолютному значению разницы (будет наименьшим для наиболее подходящей строки), а затем взять Col2 первой строки.

SELECT Col2
FROM your_table
ORDER BY ABS( Col1 - your_value )
LIMIT 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...