SELECT *
FROM my_table
WHERE 1
ORDER BY
CASE price WHEN 0 THEN 1
ELSE -1
END ASC, price asc, id asc
SELECT orders.status, orders.created_at
FROM `orders`
ORDER BY
status='new' DESC,
status='processing' DESC,
CASE WHEN status IN ('new', 'processing') THEN created_at END ASC,
CASE WHEN status NOT IN ('new', 'processing') THEN created_at END DESC