Сначала получите последнюю запись, затем остаток в порядке возрастания - PullRequest
1 голос
/ 11 марта 2019

У меня есть таблица roles, которую я хотел бы получить в специальном порядке.

В таблице есть поля id и description.

Я бы хотел получить описание значения последней строки ПЕРВЫМ, а затем получить оставшиеся данные описания в порядке возрастания.

Я имею в виду сначала получить последний идентификатор, затем остальные в обычном порядке возрастания.

На таблицу ссылается другая таблица, поэтому ее нельзя переставить для достижения этой цели.

Возможно ли это?

Ответы [ 3 ]

1 голос
/ 28 марта 2019

Пожалуйста, запишите.

   SELECT id, description
    FROM @tbl
    ORDER BY
    CASE WHEN id= (SELECT MAX(id) FROM @tbl) THEN 0 ELSE 1 END
0 голосов
/ 11 марта 2019

Пожалуйста, попробуйте это.

SELECT id, description
FROM @tbl
ORDER BY
CASE WHEN id= (SELECT MAX(id) FROM @tbl) THEN 0 ELSE 1 END

Пример: ---

Declare @tbl Table(
id INT ,
description   Varchar(50),
description22   Varchar(50),
DeptId INT
)

INSERT INTO @tbl VALUES(1,'g1','g2',NULL)
INSERT INTO @tbl VALUES(2,'g2','g3',NULL)
INSERT INTO @tbl VALUES(3,'g3','g1',NULL)


SELECT id, description
FROM @tbl
ORDER BY
    CASE WHEN id = (SELECT MAX(id) FROM @tbl) THEN 0 ELSE 1 END
0 голосов
/ 11 марта 2019

Один вариант сортирует, используя подзапрос, чтобы найти последнее описание:

SELECT id, description
FROM yourTable
ORDER BY
    CASE WHEN id = (SELECT MAX(id) FROM yourTable) THEN 0 ELSE 1 END,
    id;

Если вы используете MySQL 8 или более позднюю версию, тогда мы можем попытаться избежать подзапроса, используя MAX в качестве аналитической функции:

SELECT id, description
FROM yourTable
ORDER BY
    IF(id = MAX(id) OVER (), 0, 1),
    id;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...