Я бы перевел ваше требование как:
order by
top3 desc,
top2 desc,
top1 desc,
nullif(`order`, 0) nulls last
Последние критерии сокращаются по возрастанию order
, сохраняя значения null
s и 0
последними.
Обратите внимание что order
является зарезервированным словом во всех диалектах SQL, поэтому не очень хороший выбор для имени столбца.