Настраиваемый порядок таблиц, по определенным идентификаторам затем desc - PullRequest
0 голосов
/ 25 февраля 2019

Я хотел бы написать что-то вроде этого:

SELECT * FROM table ORDER BY id 0, 1 DESC

Таким образом, я мог бы упорядочить результаты по идентификатору от последнего к первому, при этом первые 2 останутся на месте.

Итак, если у меня есть эта таблица (просто пример):

id   lucky_number
0         10
1         20
2         30
3         40
4         50
5         60

Я бы получил этот результат обратно:

id   lucky_number
0         10
1         20
5         60
4         50
3         40
2         30

Как мне этого добиться?

Ответы [ 2 ]

0 голосов
/ 25 февраля 2019

Я нашел другой способ сделать это, используя FIELD():

SELECT *
FROM `table`
ORDER BY FIELD(id,1,0) DESC, id DESC

Демо на dbfiddle

0 голосов
/ 25 февраля 2019

Вы находитесь на правильном пути, вы можете добавить переменную к вашему ORDER BY, которая равна 1 для id = 0 или 1 и упорядочена по убыванию, затем упорядочена по id, но с использованием -id, когда id не 0 или 1, чтобы сортировать значения по убыванию:

SELECT *
FROM `table`
ORDER BY id IN (0,1) DESC, CASE WHEN id IN (0,1) THEN id ELSE -id END;

Вывод:

id  lucky_number
0   10
1   20
5   60
4   50
3   40
2   30

Демонстрация на dbfiddle

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...