SQL, сортировка с условием

194
10 ноября 2017, 10:13

В общем есть таблица {table}, в ней столбцы {id, price}, у некоторых товаров price = 0, что означает, что цена договорная. Если я делаю SQL запрос с ORDER BY price ASC то первыми отображаются товары с договорной ценой, однако мне нужно убрать их в конец. Собсно, можно ли реализовать это с помощью SQL запроса?

ПыСы, я знаю, что можно выходные строки еще раз пересортировать с помощь php foreach, где отслеживать price == 0 и переносить его в конец массива, НО сайт написан очень костыльно, очень криво, где-то используется yii, где-то нет, где-то одна версия, где-то другая, там короче черт ногу сломит и я хочу обойтись малой кровью.

Answer 1

В условиях сортировки можно использовать конструкцию case ..when .. then ...

select id, 
       price 
from   table
order  by case when price = 0 then null else price end asc

В этом примере я полагаюсь на то, что в моей БД при сортировке null всегда будет в конце. Если в вашей БД это не так, то null можно заменить на очень большое число.

Answer 2
SELECT *
FROM table
ORDER BY price = 0, price
READ ALSO
Yii2 $allowedActions не работает при actions

Yii2 $allowedActions не работает при actions

В апи контроллере есть

205
label в форме yii2 заезжает за инпут

label в форме yii2 заезжает за инпут

Только изучаю yiiПри добавлении лейбла к форме, он заползает под инпут

159
Помогите вивести категории (yii2)

Помогите вивести категории (yii2)

Модель Portfolio с гетером:

165
DLE получить ID новости в engine.php

DLE получить ID новости в engine.php

Существует CMS DLEВ engine

228