(я бы написал это как комментарий к ответу Мишеля Тобона, но не имею репутации, извините: -)
"И это сработало ... почему? Бьет меня, но оно просто сработало; попробуй тоже."
Причина, по которой это работает, заключается в том, что ваше выражение "code! = 'USA" "выдает логический результат, который в SQL представлен как 1 или 0. Таким образом, выражение" code =' USA "выдает 1 для каждая запись, которая соответствует этому критерию, и 0 для каждой записи, которая не соответствует. Поскольку 1 в сортировке по возрастанию (по умолчанию) позже 0, совпадающие записи будут сортироваться позже, чем несопоставимые. Таким образом, отрицательное выражение производит противоположный эффект.
Другой (возможно, более ясный) способ получения того же результата будет следующим:
SELECT * FROM countries ORDER BY code='USA' DESC, code='CAN' DESC, name ASC
Конечно, отвечая на вопрос ОП, мне больше всего нравится опция FIELD () - довольно чисто: -)