Я хочу сделать sql-запрос, который будет искать базу данных, чтобы найти несколько ближайших значений У меня есть следующий запрос, чтобы найти ближайшее значение.SQL - получить несколько ближайших значений
SELECT * FROM table
WHERE price >= (50 * .9) and price <= (50 * 1.1)
order by abs(price - 50) LIMIT 1;
Сво работает нормально, но я хочу сделать, что он будет искать более одного значения что-то вроде:
SELECT * FROM table
WHERE price >= (50 * .9) and price <= (50 * 1.1) //here i want one result (limit 1)
or price >= (50 * 1.9) and price <= (50 * 2.1) //here i want one result (limit 1)
order by abs(price - 50)
Я хочу для каждого предела цены 1 не найти все значения. Как я могу это сделать?
// редактирование только что нашли ответ.
(select *
from table
WHERE price >= (50 * .9) and price <= (50 * 1.1)
order by abs(price - 50)
limit 1
) union all
(select *
from table
WHERE price >= (50 * 1.9) and price <= (50 * 2.1)
order by abs(price - 50)
limit 1
)
Потому что вы заказываете в порядке возрастания, то второй запрос всегда будет возвращать такой же, как первый (если первый не пуст). это делает первый бесполезным. – VillasV