O resultado de uma comparação no MySQL é
0
ou 1
. Então Stock > 0
é 1
se true
. E 1
e maior que 0
. Então ou use ORDER BY Stock = 0 ASC, Price DESC
ou
ORDER BY Stock > 0 DESC, Price DESC
ou
ORDER BY case when Stock > 0
then 1
else 2
end,
Price DESC