У меня есть набор столбцов, для которого я хотел бы заказать набор из 2 строк. Например, как показано ниже:

col1  col2

1     4
2     5
3     6
4     1
5     2
6     3

Пожеланная выходная мощность:

col1  col2

1     4
4     1
2     5
5     2
3     6
6     3

Любая помощь была бы признательна.

0
delalma 5 Июл 2021 в 16:11

3 ответа

Лучший ответ

Вы должны отсортировать по наименьшему из столбцов первым и самым большим следующим:

ORDER BY CASE WHEN col1 < col2 THEN col1 ELSE col2 END,
         CASE WHEN col1 < col2 THEN col2 ELSE col1 END

Большинство баз данных поддерживают такие функции, как MySql LEAST() и GREATEST(), которые упрощают код:

ORDER BY LEAST(col1, col2),
         GREATEST(col1, col2)
0
forpas 5 Июл 2021 в 13:17

Если вы хотите выбрать записи из таблицы, но хотите, чтобы они были отсортированы по двум столбцам, вы можете сделать это с помощью ORDER BY. Это предложение находится в конце вашего SQL-запроса.

Sort by multiple column : ORDER BY column1 DESC, column2
SELECT * FROM table_name ORDER BY col1 ASC;             -- ASCending is default
SELECT * FROM table_name ORDER BY col1 DESC;            -- DESCending
SELECT * FROM table_name ORDER BY col1 DESC, col2;      -- col1 DESC then col2 ASC


0
opia austin 5 Июл 2021 в 13:23

Я думаю, ваше предложение SQL должно содержать следующее предложение ORDER BY:

ORDER BY col1 + col 2 ASC, col1 ASC 

Буду работать

-1
J. Rios 5 Июл 2021 в 13:15