Я хочу взять данные из таблицы продуктов. Приходится сортировать по цене, но так, чтобы в первую очередь показывались те, чья цена находится между заданным максимумом и минимумом.
Пример таблицы:
Заголовок | цена |
---|---|
Продукт 1 | 10 |
Продукт 2 | 8 |
Продукт 3 | 15 |
Продукт 4 | 11 |
Продукт 5 | 12 |
Продукт 6 | 20 |
Продукт 7 | 24 |
Если мин = 10 и макс = 15
В результате должна получиться следующая последовательность: Продукт 1, Продукт 4, Продукт 5, Продукт 3, Продукт 2, Продукт 6, Продукт 7
Спасибо.
Вы можете использовать CASE HWEN для определения двух групп.
1 между ценой
SELECT * FROM product ORDER By CASE WHEN `price` BETWEEN 10 AND 15 Then 1 ELSE 2 END ASC, `price` ASC
Title | price :----- | ----: Prod 1 | 10 Prod 4 | 11 Prod 5 | 12 Prod 3 | 15 Prod 2 | 8 Prod 6 | 20 Prod 7 | 24
дб <> рабочий пример здесь
Спасибо за Ваш ответ. Это тоже работа.
Вы можете отсортировать сначала по логическому выражению price BETWEEN 10 AND 15 DESC
, а затем по price
:
SELECT *
FROM tablename
ORDER BY price BETWEEN 10 AND 15 DESC, price;
Смотрите демо.
Вы также можете просто сгруппировать 2 выбора в один с помощью СОЮЗ.
select * from test where value >= 10 and value <= 15
union
select * from test where value < 10 or value > 15
Я не понимаю, почему вы проголосовали против? Я написал нормальный вопрос.