В общем есть таблица {table}
, в ней столбцы {id, price}
, у некоторых товаров price = 0
, что означает, что цена договорная. Если я делаю SQL запрос с ORDER BY price ASC
то первыми отображаются товары с договорной ценой, однако мне нужно убрать их в конец. Собсно, можно ли реализовать это с помощью SQL запроса?
ПыСы, я знаю, что можно выходные строки еще раз пересортировать с помощь php foreach
, где отслеживать price == 0 и переносить его в конец массива, НО сайт написан очень костыльно, очень криво, где-то используется yii, где-то нет, где-то одна версия, где-то другая, там короче черт ногу сломит и я хочу обойтись малой кровью.
В условиях сортировки можно использовать конструкцию case ..when .. then ..
.
select id,
price
from table
order by case when price = 0 then null else price end asc
В этом примере я полагаюсь на то, что в моей БД при сортировке null
всегда будет в конце. Если в вашей БД это не так, то null
можно заменить на очень большое число.
SELECT *
FROM table
ORDER BY price = 0, price
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Только изучаю yiiПри добавлении лейбла к форме, он заползает под инпут