9

Множественная сортировка по нескольким столбцам в SQL

11

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

5 ответ(ов)

14

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

5

Другие ответы не содержат конкретного примера, поэтому вот он:

Предположим, у нас есть следующая таблица People:

 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

Как видно, данные сначала сортируются по FirstName в порядке убывания, а затем по YearOfBirth в порядке возрастания. Всех имен Thomas мы видим первыми, и они расположены по дате рождения от самого раннего к самому позднему. После всех записей с именем Thomas идет запись с именем Benjamin.

1

Этот SQL-запрос выбирает все столбцы из таблицы mytable и сортирует результаты. Сортировка выполняется по столбцу column1 в порядке убывания (DESC), а затем по столбцу column2 в порядке возрастания (ASC). Таким образом, сначала будут отсортированы строки по column1 от большего к меньшему, а в случае равенства значений по этому столбцу, строки будут отсортированы по column2 от меньшего к большему.

0

Вы можете использовать множественную сортировку по нескольким условиям в SQL. В вашем случае это может выглядеть так:

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 

В данном примере сортировка сначала будет осуществляться по названию лекарства, если @AlphabetBy равно 2, а затем по одному из указанных полей ([Rx Count], [Cost] или [Revenue]), в зависимости от значения переменной @TopBy.

0

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

После ключевого слова ORDER BY добавьте название столбца, по которому вы хотите сначала отсортировать записи (в нашем примере это salary). Затем, после запятой, добавьте второй столбец (в данном случае last_name). Вы можете изменять порядок сортировки (по возрастанию или убыванию) отдельно для каждого столбца. Если вы хотите использовать порядок по возрастанию (от меньшего к большему), можете использовать ключевое слово ASC; это ключевое слово является необязательным, так как это порядок по умолчанию, если не указано иное. Если вы хотите использовать порядок по убыванию, добавьте ключевое слово DESC после соответствующего столбца (в нашем примере мы использовали порядок по убыванию для столбца salary).

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь