Упорядочение нескольких столбцов SQL

Я пытаюсь сортировать по нескольким столбцам в SQL и в разных направлениях. column1 будет отсортировано по убыванию, а column2 - вверх.

Как я могу это сделать?

Ответ 1

ORDER BY column1 DESC, column2

Сначала сортируется все по column1 (убыв), а затем по column2 (по возрастанию, по умолчанию), когда поля column1 для двух строк равны.

Ответ 2

В других ответах отсутствует конкретный пример, так что вот оно:

Учитывая следующую таблицу Люди:

 FirstName |  LastName   |  YearOfBirth
----------------------------------------
  Thomas   | Alva Edison |   1847
  Benjamin | Franklin    |   1706
  Thomas   | More        |   1478
  Thomas   | Jefferson   |   1826

Если вы выполните запрос ниже:

SELECT * FROM People ORDER BY FirstName DESC, YearOfBirth ASC

Результирующий набор будет выглядеть следующим образом:

 FirstName |  LastName   |  YearOfBirth
----------------------------------------
  Thomas   | More        |   1478
  Thomas   | Jefferson   |   1826
  Thomas   | Alva Edison |   1847
  Benjamin | Franklin    |   1706

Ответ 3

SELECT  *
FROM    mytable
ORDER BY
        column1 DESC, column2 ASC

Ответ 4

Порядок нескольких столбцов зависит от обоих значений столбца: Вот мой пример таблицы, где два столбца с именем с алфавитами и номерами, а значения в этих двух столбцах - орлы asc и desc.

введите описание изображения здесь

Теперь я выполняю Заказ в этих двух столбцах, выполнив следующую команду:

введите описание изображения здесь

Теперь снова я вставляю новые значения в эти два столбца, где значение алфавита в порядке ASC:

введите описание изображения здесь

и столбцы в таблице Example выглядят следующим образом. Теперь снова выполните ту же операцию:

введите описание изображения здесь

Вы можете видеть, что значения в первом столбце находятся в порядке desc, но второй столбец не находится в порядке ASC.

Ответ 5

Вы можете использовать несколько заказов в нескольких условиях,

ORDER BY 
     (CASE 
        WHEN @AlphabetBy = 2  THEN [Drug Name]
      END) ASC,
    CASE 
        WHEN @TopBy = 1  THEN [Rx Count]
        WHEN @TopBy = 2  THEN [Cost]
        WHEN @TopBy = 3  THEN [Revenue]
    END DESC