Есть не совсем "правильный" sql-запрос: SELECT * FROM `products` ORDER BY `quantity` DESC, `position` поле quantity - числовое значение от 0 до нескольких сотен - хранит остаток товара на складе; поле position - внутренняя сортировка товара - чем меньше значение в нем, тем товар должен выводиться в каталоге раньше относительно других. Как переписать этот запрос таким образом, чтобы в начале списка шли все товары у которых ненулевое количество на складе (quantity != 0), отсортированные по полю position, а потом товары с нулевым количеством на складе? (если можно это сделать одним запросом)
Ответ
Используйте CASE в предложении ORDER BY. Примерно так SELECT * FROM `products` ORDER BY case when `quantity`!=0 then 0 else 1 end, `position`
Комментариев нет:
Отправить комментарий