mysql order by int as boolean (true false)

В примере нужно сортировать позиции каталога по наименованию, но вначале товары в наличии — остаток которых больше 0.

SELECT * FROM `catalog` WHERE `hide`='0' ORDER BY IF(`ost`,TRUE,FALSE) DESC, `name` ASC;

upd:
замечено что позиции с остатком меньше 0 все равно попадают в начало списка.
Другой вариант:

SELECT * FROM `catalog` WHERE `hide`='0' ORDER BY `ost`>0 DESC, `name` ASC;

Оставить комментарий

или Ctrl+Enter

Комментарии к записи по RSS