Найти строку из базы данных в зависимости от значения, ближайшего к заданному значению - PullRequest
3 голосов
/ 17 июня 2011

Я хочу найти строку таблицы из базы данных в зависимости от значения, ближайшего к заданному значению.

У меня есть следующие данные

Id  Rate         Fat
1   10           8.00
2   20           8.10
3   30           8.20
4   40           8.30
5   50           8.34
6   60           8.40
7   50           8.36

предположим, что пользователь хочет найти с помощью жира

Для 8.0 он должен возвращать

Id  Rate         Fat
1   10           8.00

Для 8.06 он должен возвращать

Id  Rate         Fat
2   20           8.10

Для 8,35 он должен возвращать 8,34 вместо 8,36 (хотя разница такая же, она должна датьпредпочтение меньшему значению, если разница одинакова)

Id  Rate         Fat
5   60           8.34

1 Ответ

5 голосов
/ 17 июня 2011

В SQL Server вы можете сделать это

select top 1 *
from T
order by abs(Fat - 8.35), Fat

Я думаю , что синтаксис для MySQL равен

select *
from T
order by abs(Fat - 8.35), Fat
limit 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...