SQL ORDER BY Статья
Предложение ORDER BY можно использовать в запросе SELECT для сортировки результата по возрастанию или убыванию одного или нескольких столбцов.
Синтаксис:
ВЫБЕРИТЕ столбец1, столбец2,... столбецN ОТ имя_таблицы [КУДА] [ГРУППА ПО] [ИМЕЮЩИЙ] [ORDER BY столбцы [ASC|DESC]]
- Предложение ORDER BY используется для получения отсортированных записей по одному или нескольким столбцам в порядке возрастания или убывания.
- Предложение ORDER BY должно стоять после предложений WHERE, GROUP BY и HAVING, если они присутствуют в запросе.
- Используйте ASC или DESC, чтобы указать порядок сортировки после имени столбца. Используйте ASC для сортировки записей по возрастанию или используйте DESC для убывания. По умолчанию предложение ORDER BY сортирует записи в порядке возрастания, если порядок не указан.
Для демонстрационных целей мы будем использовать следующие Сотрудник
во всех примерах.
Эмпирид | Имя | Фамилия | Электронная почта | Телефон № | Зарплата | ИД отдела |
---|---|---|---|---|---|---|
1 | ‘Джон’ | ‘Король’ | ‘[электронная почта защищена]’ | ‘650.127.1834’ | 33000 | 1 |
2 | ‘Джеймс’ | ‘Бонд’ | 1 | |||
3 | ‘Нина’ | ‘Кочхар’ | ‘[электронная почта защищена]’ | ‘123. 456.4568′ | 17000 | 2 |
4 | ‘Лекс’ | ‘Де Хаан’ | ‘[электронная почта защищена]’ | ‘123.000.4569’ | 15000 | 1 |
5 | ‘Амит’ | ‘Патель’ | 18000 | |||
6 | ‘Абдул’ | ‘Калам’ | ‘[электронная почта защищена]’ | ‘123.123.0000’ | 25000 | 2 |
Следующий запрос извлечет все записи из таблицы Employee
и отсортирует результат в порядке возрастания Имя
значений.
ВЫБЕРИТЕ * ОТ Сотрудника ЗАКАЗАТЬ ПО Имени;
Эмпирид | Имя | Фамилия | Электронная почта | Телефон № | Зарплата | ИД отдела |
---|---|---|---|---|---|---|
6 | ‘Абдул’ | ‘Калам’ | ‘[электронная почта защищена]’ | ‘123.123.0000’ | 25000 | 2 |
5 | ‘Амит’ | ‘Патель’ | 18000 | 1 | ||
2 | ‘Джеймс’ | ‘Бонд’ | 1 | |||
1 | ‘Джон’ | ‘Король’ | ‘[электронная почта защищена]’ | ‘650. 127.1834′ | 33000 | 1 |
4 | ‘Лекс’ | ‘Де Хаан’ | ‘[электронная почта защищена]’ | ‘123.456.4569’ | 15000 | 1 |
3 | ‘Нина’ | ‘Кочхар’ | ‘[электронная почта защищена]’ | ‘123.456.4568’ | 17000 | 2 |
Следующий запрос вернет строки в порядке убывания Имя
значение.
ВЫБЕРИТЕ EmpId, Имя, Фамилию ОТ Сотрудника ЗАКАЗАТЬ ПО ИМЕНИ DESC;
Эмпирид | Имя | Фамилия |
---|---|---|
3 | ‘Нина’ | ‘Кочхар’ |
4 | ‘Лекс’ | ‘Де Хаан’ |
1 | ‘Джон’ | ‘Король’ |
2 | ‘Джеймс’ | ‘Бонд’ |
5 | ‘Амит’ | ‘Патель’ |
6 | ‘Абдул’ | ‘Калам’ |
Сортировка по нескольким столбцам
Предложение ORDER BY может включать несколько столбцов в разном порядке сортировки (по возрастанию или по убыванию). Когда вы включаете несколько столбцов с предложением ORDER BY, оно сортирует записи на основе первого столбца, и если любые две или более записей имеют одинаковое значение в первом столбце ORDER BY, они сортируются по второму столбцу ORDER BY. .
Чтобы понять это, сначала отсортируйте результат по столбцу DeptId
, как показано ниже.
ВЫБЕРИТЕ * ОТ Сотрудника ЗАКАЗАТЬ ПО DeptId;
Приведенный выше запрос выдаст следующий результат.
Эмпирид | Имя | Фамилия | Телефон № | Дата найма | Зарплата | ИД отдела |
---|---|---|---|---|---|---|
1 | ‘Джон’ | ‘Король’ | ‘[электронная почта защищена]’ | ‘650. 127.1834′ | 33000 | 1 |
2 | ‘Джеймс’ | ‘Бонд’ | 1 | |||
4 | ‘Лекс’ | ‘Де Хаан’ | ‘[электронная почта защищена]’ | ‘123.000.4569’ | 15000 | 1 |
5 | ‘Амит’ | ‘Патель’ | 18000 | 1 | ||
3 | ‘Нина’ | ‘Кочхар’ | ‘[электронная почта защищена]’ | ‘123. 456.4568′ | 17000 | 2 |
6 | ‘Абдул’ | ‘Калам’ | ‘[электронная почта защищена]’ | ‘123.123.0000’ | 25000 | 2 |
Теперь включите столбец FirstName
в предложение ORDER BY.
ВЫБЕРИТЕ * ОТ Сотрудника ЗАКАЗАТЬ ПО DeptId, Имя;
Приведенный выше запрос сначала отсортирует результат по DeptId
, а затем строки с одинаковым DeptId
будут отсортированы по FirstName
. Помните, что мы не включили ASC или DESC, поэтому по умолчанию результат будет отсортирован в порядке возрастания, как показано ниже.
Эмпирид | Имя | Фамилия | Дата найма | Зарплата | ИД отдела | |
---|---|---|---|---|---|---|
5 | ‘Амит’ | ‘Патель’ | 18000 | 1 | ||
2 | ‘Джеймс’ | ‘Бонд’ | 1 | |||
1 | ‘Джон’ | ‘Король’ | ‘[электронная почта защищена]’ | ‘650. 127.1834′ | 33000 | 1 |
4 | ‘Лекс’ | ‘Де Хаан’ | ‘[электронная почта защищена]’ | ‘123.000.4569’ | 15000 | 1 |
6 | ‘Абдул’ | ‘Калам’ | ‘[электронная почта защищена]’ | ‘123.123.0000’ | 25000 | 2 |
3 | ‘Нина’ | ‘Кочхар’ | ‘[электронная почта защищена]’ | ‘123.456.4568’ | 17000 | 2 |
Сортировка группы записей
Следующий запрос сортирует группу записей.
SELECT dept.Name как «Отдел», count(emp.empid) как «Число сотрудников» ОТ Сотрудник ип, отдел отдела ГДЕ emp.deptid = dept.DeptId ГРУППА по названию отдела ЗАКАЗАТЬ ПО названию отдела DESC
Отдел | Количество сотрудников |
---|---|
ЧАС | 2 |
Финансы | 4 |
Пункт ORDER BY — сортировка данных в SQL
SQL > Команды SQL > Заказ по номеруКоманда ORDER BY в SQL сортирует результирующий набор либо по возрастанию, либо по убыванию. ORDER BY обычно появляется последним в операторе SQL, потому что он выполняется после получения результирующего набора.
Синтаксис
Синтаксис оператора ORDER BY следующий:
ВЫБЕРИТЕ «имя_столбца»
ИЗ «имя_таблицы»
[ГДЕ «состояние»]
ORDER BY «column_name» [ASC, DESC];
[ ] означает, что оператор WHERE является необязательным. Однако если существует предложение WHERE , оно предшествует предложению ORDER BY . ASC означает, что результаты будут показаны в порядке возрастания, а DESC означает, что результаты будут показаны в порядке убывания. Если ни один из них не указан, по умолчанию используется ASC .
Возможен заказ более чем по одной колонке. Для случая, когда мы сортируем по двум столбцам, ORDER BY Пункт выше становится
ORDER BY «имя_столбца1» [ASC, DESC], «имя_столбца2» [ASC, DESC]
Предполагая, что мы выбираем возрастающий порядок для обоих столбцов, выходные данные будут упорядочены в возрастающем порядке в соответствии с столбцом 1. Если есть связь для значения столбца 1, мы затем сортируем в порядке возрастания по столбцу 2.
Количество столбцов, которые можно использовать в предложении ORDER BY , не ограничено. Однако общее практическое правило заключается в том, что вы должны включать только те столбцы, которые необходимы для вашего варианта использования.
Примеры
Мы используем следующую таблицу для примеров 1-3.
Table Store_Information
Los Angeles | 1500 | Jan-05-1999 |
San Diego | 250 | Jan-07-1999 |
San Francisco | 300 | 08 января 1999 |
Бостон | 700 | 08 января 1999 |
Пример 1: ORDER BY для одного столбца с именем столбца
Чтобы перечислить содержимое таблицы Store_Information по продажам в порядке убывания, введите
ВЫБЕРИТЕ Store_Name, Продажи, Txn_Date
ОТ Store_Information
ЗАКАЗАТЬ ПО ПРОДАЖЕ DESC;
Результат:
Store_Name | Продажи | Txn_Date |
Los Angeles | 1500 | Jan-05-1999 |
Boston | 700 | Jan-08-1999 |
San Francisco | 300 | Jan- 08-1999 |
Сан-Диего | 250 | 07 января 1999 |
Пример 2: ORDER BY для одного столбца с использованием позиции столбца
В дополнение к имени столбца мы также можем использовать положение столбца (на основе SQL-запроса), чтобы указать, к какому столбцу мы хотим применить ORDER BY пункт. Первый столбец равен 1, второй столбец равен 2 и так далее. В приведенном выше примере мы добьемся тех же результатов с помощью следующей команды:
. ВЫБЕРИТЕ Store_Name, Sales, Txn_Date
ОТ Store_Information
ЗАКАЗАТЬ ПО 2 DESC;
Пример 3: ORDER BY для одного столбца с использованием столбца, которого нет в операторе SELECT
Столбцы, которые мы используем для сортировки результатов, не обязательно должны находиться в Пункт SELECT . Например, следующий SQL,
ВЫБЕРИТЕ Store_Name
ОТ Store_Information
ЗАКАЗАТЬ ПО ПРОДАЖЕ DESC;
отлично работает и даст следующий результат:
Store_Name | |||||||||||||||||||||||||
Лос -Анджелес | |||||||||||||||||||||||||
Бостон | |||||||||||||||||||||||||
Сан -Франциско | |||||||||||||||||||||||||
SAN DiGA | 9444444944999999944SAN DiGA | ||||||||||||||||||||||||
SAN DiGA | 4444444499999999999999999999999999944
1 | 10 | 9 |
2 | 15 | 4 |
3 | 25 | 3 |
we can use the Оператор SQL ниже, чтобы упорядочить результаты по доходу (определяется как цена * единицы):
ВЫБЕРИТЕ Product_ID, Цена*Доход от единиц
ОТ Продукт_Продажи
ЗАКАЗАТЬ ПО Цена*Единицы DESC;
Результат:
Product_ID | Доход | ||||||||||||||||||||||||
1 | |||||||||||||||||||||||||
3 | 70044 | ||||||||||||||||||||||||
3 | 70044 | ||||||||||||||||||||||||
.УпражненияДля этих упражнений предположим, что у нас есть таблица с именем 9.0618 User_Sales со следующими данными: Table User_Sales
1. Which of the следующий оператор SQL действителен? (может быть несколько ответов) 2. Оставить комментарий
|