На самом деле он упорядочивается по результату сравнения, который является логическим значением 0 или 1. Результирующий код выглядит примерно так (псевдокод):
ORDER BY
CASE whatever = 3 THEN 1 ELSE 0
ASC,
CASE whatever = 4 THEN 1 ELSE 0
ASC
К чему в итоге приходитзначение находится в списке),
ORDER BY 0,0,1
ORDER BY 0,1,0
и, если значение отсутствует в списке:
ORDER BY 0,0,0
Значения, отсутствующие в списке, рассматриваются с одним и тем же значением.и не упорядочены, и значения в списке упорядочены на основе позиции в списке.
Вы можете заменить это на ORDER BY FIELD(whatever, 3,4,6)
( документация )