Как я могу сортировать по нескольким столбцам в SQL и в разных направлениях. column1
будет отсортирован по убыванию, а column2
по возрастанию.
Порядок нескольких столбцов в SQL
Ответы (5)
ORDER BY column1 DESC, column2
Это сортирует все сначала по column1
(по убыванию), а затем по column2
(по возрастанию, по умолчанию), когда поля column1
для двух или более строк равны.
column1
, а затем по column2
, если поля column1
для двух строк равны.
- person Nick Benes; 29.05.2014
column2
, а затем выполняет СТАБИЛЬНУЮ сортировку по column1
. Это более понятно для людей, которые знают, что такое стабильная сортировка.
- person Atom; 03.10.2016
В других ответах отсутствует конкретный пример, поэтому вот оно:
Учитывая следующую таблицу Люди:
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
1.Firstname asc, Lastname desc, yearOfBirst asc and 2.Firstname asc, Lastname desc, yearOfBirst desc
Есть ли способ преодолеть это?
- person Paramesh Korrakuti; 17.04.2018
FirstName, LastName
записи с разными YearOfBirth
- person Thomas C. G. de Vilhena; 20.04.2018
Порядок нескольких столбцов зависит от соответствующих значений обоих столбцов: Вот мой пример таблицы, в которой два столбца названы алфавитами и числами, а значения в этих двух столбцах - порядки asc и desc. .
Теперь я выполняю Порядок в этих двух столбцах, выполнив команду ниже:
Теперь я снова вставляю новые значения в эти два столбца, где значение Alphabet в порядке ASC:
и столбцы в таблице примеров выглядят следующим образом. Теперь снова выполните ту же операцию:
Вы можете видеть, что значения в первом столбце находятся в порядке убывания, а во втором столбце - не в порядке ASC.
(g, 10),(g,12)
. Затем запустите свой запрос по порядку, вы получите второй столбец как ASC
порядок (что означает g-10,g-11,g-12)
- person Pugal; 05.05.2018
Вы можете использовать множественный заказ при нескольких условиях,
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
SELECT id,
first_name,
last_name,
salary
FROM employee
ORDER BY salary DESC, last_name;
Если вы хотите выбрать записи из таблицы, но хотите, чтобы они были отсортированы по двум столбцам, вы можете сделать это с помощью ORDER BY. Это предложение находится в конце вашего SQL-запроса.
После ключевого слова ORDER BY добавьте название столбца, по которому вы хотите сначала отсортировать записи (в нашем примере - зарплата). Затем после запятой добавьте второй столбец (в нашем примере last_name). Вы можете изменить порядок сортировки (по возрастанию или по убыванию) отдельно для каждого столбца. Если вы хотите использовать возрастающий (от меньшего к большему) порядок, вы можете использовать ключевое слово ASC; это ключевое слово является необязательным, так как это порядок по умолчанию, когда ничего не указано. Если вы хотите использовать порядок убывания, поместите ключевое слово DESC после соответствующего столбца (в этом примере мы использовали порядок убывания для столбца зарплаты).