2015-09-09 1 views

ответ

4

Вы можете просто поставить логику в order by:

order by (id = 3) desc, name 

MySQL обрабатывает логическое выражение в виде числа в числовом контексте, с истинным равным 1 и ложным равным 0. Таким образом, desc после сравнения.

1

Создать виртуальный столбец, который обрабатывает правила сортировки вам требуется, например, как это довольно тривиальный пример:

SELECT CASE WHEN id = 3 THEN "~~~~~~~~~" ELSE name END AS sortfield, 
     name, ... 
    FROM ... 
ORDER BY 1, 2 
+0

Нет, было более элегантным решением с параметрами ORDER BY – Ahmed

0

ORDER BY id! = 3 DESC, имя ASC

То есть вы не можете делать то, что говорили. Вы не можете ЗАКАЗАТЬ все по какой-то идее, кроме одной из этих вещей. You может ORDER BY два критерия, сначала ваш сумасшедший критерий (для которого все, кроме вашего причудливого значения, одинаково), а затем что-то другое для каждой строки.

Смежные вопросы