Вы можете сортировать, используя выражение CASE
, которое ставит нулевые цены последними:
SELECT *
FROM products
WHERE ...
ORDER BY
CASE WHEN Price > 0 THEN 0 ELSE 1 END,
Price;
В MySQL предложение ORDER BY
может быть упрощено:
SELECT *
FROM products
WHERE ...
ORDER BY
Price = 0, -- false (0) for positive prices, true (1) for zero prices
Price;