Оператор SQL ORDER BY: синтаксис, примеры

Оператор SQL ORDER BY выполняет сортировку выходных значений. Оператор SQL ORDER BY можно применять как к числовым столбцам, так и к строковым. В последнем случае, сортировка будет происходить по алфавиту.

Оператор SQL ORDER BY имеет следующий синтаксис:

ORDER BY column_name [ASC | DESC]

Сортировка может производиться как по возрастанию, так и по убыванию значений.

  • Параметр ASC (по умолчанию) устанавливает порядок сортирования во возрастанию, от меньших значений к большим.
  • Параметр DECS устанавливает порядок сортирования по убыванию, от больших значений к меньшим.

Примеры оператора SQL ORDER BY. Имеется следующая таблица Artists:

SingerAlbumYearSale
The ProdigyInvaders Must Die20081200000
Drowning PoolSinner2001400000
Massive AttackMezzanine19982300000
The ProdigyFat of the Land1997600000
The ProdigyMusic For The Jilted Generation19941500000
Massive Attack100th Window20031200000
Drowning PoolFull Circle2007800000
Massive AttackDanny The Dog2004
1900000
Drowning PoolResilience2013500000

Пример 1.  Вывести все записи таблицы, упорядоченные по названию исполнителя с помощью оператора SQL ORDER BY:

SELECT *
FROM Artists
ORDER BY Singer

Результат:

SingerAlbumYearSale
Drowning PoolSinner2001400000
Drowning PoolFull Circle2007800000
Drowning PoolResilience2013500000
Massive AttackMezzanine19982300000
Massive Attack100th Window20031200000
Massive AttackDanny The Dog20041900000
The ProdigyInvaders Must Die20081200000
The ProdigyFat of the Land1997600000
The ProdigyMusic For The Jilted Generation19941500000

Пример 2.

С помощью оператора SQL ORDER BY вывести названия исполнителя, альбома, год выпуска тех альбомов, которые выпущены после 2005 года, упорядоченные по убыванию года:

SELECT Singer, Album, Year
FROM Artists
WHERE Year > 2005
ORDER BY Year DESC

Результат:

SingerAlbumYear
Drowning PoolResilience2013
The ProdigyInvaders Must Die2008
Drowning Pool
Full Circle
2007

SQL ORDER BY | ПРЕДЕЛ SQL — базовый SQL

В этой статье рассматриваются два новых предложения SELECT:

  • ORDER BY упорядочивает результаты запроса.
  • LIMIT ограничивает результирующий набор фиксированным числом строк.

SQL ЗАКАЗАТЬ ПО

Для каждого запроса можно определить разные порядки.

ORDER BY влияет только на порядок возврата результирующих записей. Это не влияет на результаты запроса.

Вот таблица Customer , используемая в примерах

ORDER BY и LIMIT : имя_клиента адрес электронной почты last_order_date 100 Джон Доу [email protected] 28.09.2020 101 Мэри Стэнтон [email protected] 28.09.2020 102 Дипали Гупта [email protected] 10.10.2020 103 Питер Кан [email protected] 10.05.2020

Вы хотите получить отчет с атрибутами имя_клиента , адрес электронной почты и

дата_последнего_заказа заказанный пользователем имя_клиента . Вот запрос SQL:

ВЫБЕРИТЕ имя_клиента, адрес электронной почты, дату_последнего_заказа
ОТ клиента
ЗАКАЗАТЬ по customer_name
 

Вот результаты, заказанные имя_клиента :

имя_клиента адрес электронной почты last_order_date
Дипали Гупта [email protected] 10.10.2020
Джон Доу [email protected] 09/28/2020
Мэри Стэнтон [email protected] 28.09.2020
Питер Кан [email protected] 10.05.2020

Вы можете легко изменить критерии заказа. Вот тот же отчет, упорядоченный по атрибуту last_order_date :

ВЫБЕРИТЕ имя_клиента, адрес электронной почты, дату_последнего_заказа
ОТ клиента
ЗАКАЗАТЬ ПО last_order_date
 

Результат:

имя_клиента адрес электронной почты last_order_date
Мэри Стэнтон mary@allinoemarket.
com
28.09.2020
Питер Кан [email protected] 10.05.2020
Джон Доу [email protected] 28.09.2020
Дипали Гупта [email protected] 10.10.2020

ПРЕДЕЛ SQL

LIMIT используется для ограничения результирующего набора фиксированным числом строк. Естественно, если полный результирующий набор содержит меньше строк, чем число исправлений, которое мы указали в LIMIT, база данных возвращает меньше записей, чем предельное число.

LIMIT не является стандартным предложением SQL. Другие диалекты SQL имеют варианты LIMIT . Например, MS-SQL Server использует TOP, а Oracle использует ROWNUM 9.0007 .

Вот пример, ограничивающий результаты двумя строками:

ВЫБЕРИТЕ customer_id, имя_клиента, адрес электронной почты
ОТ клиента
ПРЕДЕЛ 2
 

Вот результат:

customer_id имя_клиента адрес электронной почты last_order_date
100 Джон Доу john. [email protected] 28.09.2020
101 Мэри Стэнтон [email protected] 28.09.2020

Запрос может возвращать разные результаты, поскольку вы не уверены в порядке записей в результатах.

Чтобы LIMIT имело смысл, результаты должны быть упорядочены по некоторым критериям. Решение состоит в том, чтобы объединить ORDER BY и LIMIT в одном запросе.

Например, вы хотите получить все атрибуты клиента, разместившего последний заказ. Вот запрос SQL:

ВЫБЕРИТЕ customer_id, customer_name, адрес электронной почты, last_order_date
ОТ клиента
ЗАКАЗАТЬ ПО last_order_date DESC
ПРЕДЕЛ 1
 

Пункт DESC , используемый в ORDER BY . указывает результаты в порядке убывания. В сочетании с LIMIT 1 запрос возвращает одну запись в наборе результатов. В данном случае запись с максимальным значением last_order_date .

Пример закрытия

В последнем примере объединены все предложения, изученные в этой статье, и оператор SQL SELECT.

Предположим, вашему начальнику нужен отчет о клиентах, разместивших 5 последних заказов во втором квартале. Если два или более клиентов разместили заказ в один и тот же день, отчет должен быть заказан по имени клиента. Вот запрос:

ВЫБЕРИТЕ customer_id, customer_name, адрес электронной почты, last_order_date
ОТ клиента
ГДЕ last_order_date >= ‘01.04.2020’ AND last_order_date < ‘01.07.2020’
ЗАКАЗАТЬ ПО last_order_date DESC, имя_клиента ASC
ПРЕДЕЛ 5
 

Два столбца, указанные в ORDER BY . Если имеется одна запись на last_order_date , результаты располагаются в порядке убывания до last_order_date , как указано DESC . Если несколько записей имеют одинаковое значение для last_order_date , результаты располагаются в порядке возрастания по customer_name, как указано ASC . Технически, вы можете отказаться от ASC , так как по умолчанию используется восходящий порядок. Результат:

идентификатор_клиента имя_клиента адрес электронной почты last_order_date
100 Джон Доу [email protected] 28.09.2020
103 Питер Кан [email protected] 10.05.2020

До встречи в следующей статье. Изучайте SQL, ваши навыки — это актив!

MySQL ORDER BY Команда ASC по убыванию для вывода списка записей

Результаты, которые мы получаем из таблицы, нам, возможно, придется отображать в порядке. результат может быть от большего к меньшему или от меньшего к большему в числовом поле или от A до Z или от Z до A в текстовом поле или поле varchar. Мы можем потребовать сочетание этого также.
 ВЫБЕРИТЕ * ИЗ СТУДЕНЧЕСКОГО ЗАКАЗА ПО МЕТКЕ 
9004 7 мужской
id имя класс марка пол
19 оловянный Девять 18 мужской
17 Тумью Шесть 54
29 Тесс Плейд Севен 55 мужской
3 Арнольд Три 55 мужской
6 Алекс Джон Четыре 55 900 48 наружный
22 Реггид Семь 55 Женский
10 Большой Джон Четыре 55 900 48 женский
4 Krish Star Четыре 60 женский
5 Джон Майк Четыре 60 женщина
20 Джекли Девять 900 48 65 женский

От высшего к низшему

Мы можем применить это к нашей метке числового поля, чтобы отобразить список в порядке от самой низкой оценки к самой высокой оценке с помощью команды ASC (команда по возрастанию) . Обратите внимание, что по умолчанию все команды упорядочиваются только по возрастанию. Вот команда для отображения записей в порядке убывания (от самого высокого до самый низкий) на основе поля метки.
 SELECT * FROM `student` ORDER BY mark desc 
Здесь общая оценка будет отображаться в порядке от самой высокой к самой низкой и класс учитываться не будет. Чтобы отобразить записи в порядке отметки в class, мы должны использовать имена полей в предложении order by. Вот код для отображать записи в порядке класса, а затем в порядке оценок. Этот даст очень полезный способ, отображая все записи в порядке класса и внутри класса в порядке оценок.
 SELECT * FROM `student` ORDER BY class desc, mark desc 
90 047 85 9 0047 55
id имя класс марка
2 Max Ruin Three
3 Арнольд Три 55
1 Джон Део Четыре 75
4 Криш Стар Четыре 60
5 Джон Майк Четыре 60
6 Алекс Джон Четыре

Прочитайте, как порядок по командам используется для отображения 3 старших записей таблицы учеников

заказ по полю varchar

Вот команда для отображения записей в порядке класса
 ВЫБЕРИТЕ * ИЗ `студента` ORDER BY class 
900 47 Три
идентификатор имя класс марка
1 John Deo Четыре 75
4 9 0048 Криш Стар Четыре 60
5 Джон Майк Четыре 60
6 Алекс Джон Четыре 55
2 Макс Руин 85
3 Арнольд Три 55

Здесь записи возвращаются в порядке по классам от А до Я. Мы можем изменить порядок, указав в нашей команде sql, чтобы изменить порядок на По убыванию, то есть от Z до A. Мы должны добавить desc в предложение ORDER BY. Здесь это команда сделать это
 SELECT * FROM `student` ORDER BY class desc 

Порядок по более чем одному столбцу таблицы

Мы можем отобразить список студентов на основе их оценки и на основе их имени.
 ВЫБЕРИТЕ * ОТ СТУДЕНТА ORDER BY отметка, имя 
Это будет перечислено в порядке возрастания оценки. Если несколько учеников получили одинаковую оценку (скажем, 88), то их имена будут перечислены в алфавитном порядке.

Таким образом, в списке будет отображаться Bigy выше Giff Tow , хотя оба они получили одинаковую оценку (скажем, 88)

Если вы хотите изменить порядок имен, вы можете изменить запрос следующим образом.

 ВЫБЕРИТЕ * ОТ СТУДЕНТА ORDER BY mark , name DESC 
Если вы хотите, чтобы список был от самой высокой оценки до самой низкой отметки, тогда запрос должен быть
 ВЫБЕРИТЕ * ОТ СТУДЕНТА ORDER BY mark DESC, name DESC 

Как использовать в скрипте PHP

Вы можете прочитать больше о запросе SQL SELECT, чтобы увидеть, как этот запрос можно использовать в сценарии PHP для отображения записей. Требуется изменить только часть запроса.

упорядочить по строке как целое число

При перечислении в порядке любого столбца VARCHAR или строки с номером нам нужно преобразовать их в число с помощью CAST, а затем использовать порядок по запросу.
Создайте еще один столбец diff , VARCHAR ( 3 ), затем обновите его с помощью этого запроса.
 ОБНОВЛЕНИЕ студенческого набора diff = 100 баллов 
Теперь используйте порядок по запросу.
 SELECT * FROM `student` заказать по diff desc 
Вы увидите такой список. 9 0047 Жестянка 9004 7 60
id имя класс марка пол diff
19 Девять 18 мужской 82
12 Реки Шесть 94 женский 6 9004 8
17 Тумью Шесть 54 самец 46
22 Реггид Семь 55 женщина 45
29 Тесс Плейд Семь 55 мужской 45
3 Арнольд Три 55 мужской 45
6 Алекс Джон Четыре 55 мужской 45
10 Большой Джон Четыре 55 женский 45
4 Криш Стар Четыре женский 40
5 Джон Майк Четыре 60 женщина 40
Это указано на основе первого символа столбца diff .
Нам нужно изменить значение столбца с помощью CAST, а затем использовать порядок с помощью
 SELECT * FROM `student` ORDER BY CAST(diff as unsigned) DESC 
Теперь вы получите такой список. 90 043
id имя класс знак пол дифференциал
19 Тинни Девять 18 мужской 82
17 Тумью Шесть 54 мужской 46
29 Тесс Плейд Семь 55 мужчина 45
3 Арнольд Три 55 наружная резьба 45
6 Алекс Джон Четыре 55 мужской 45
22 Реггид Семь 55 женщина 45
10 Большой Джон Четыре 55 женский 45
4 Криш Стар Четыре 60 9 0048 женский 40
5 Джон Майк Четыре 60 женщина 40
20 Джекли Девять 65 женский 35

Как дать пользователю возможность изменить порядок отображения записей?

Порядок по двум полям двух разных таблиц

В дискуссионном форуме участники создают темы (с заголовком) и другие или те же участники публикуют ответы на эту тему.
У нас два разных стола. В одной хранится тема с заголовками, а в другой таблице хранятся ответы на темы. Каждая запись хранит дату и время публикации. Нам нужно отобразить 10 лучших последних сообщений, взяв данные из таблицы title и response .
Наш заказ по запросу должен собирать данные на основе последних сообщений (это может быть тема или ответ), сравнивая дату и время публикации.

Подробнее о Union All

 ВЫБЕРИТЕ DT , ID_темы, ID_пользователя
ОТ (
ВЫБЕРИТЕ тема_id, rdtp AS dt, userid
ОТ forum_reply

СОЮЗ ВСЕХ

ВЫБЕРИТЕ тема_id, tdtp AS dt, идентификатор пользователя
ИЗ форум_темы
) т

ORDER BY dt DESC limit 0,10 
Здесь мы использовали поле даты и времени dt (обеих таблиц) для отображения записей в порядке данных и времени.
←Выбор записей SQL LEFT Join для связывания таблиц →
← Подпишитесь на наш канал YouTube здесь

Эта статья написана командой plus2net. com . https://www.plus2net.com


plus2net.com


▼ Подробнее о получении записей из таблицы различными комбинациями команд

Jigger

11-06-2013

Просто хочу спросить парней, надеюсь, вы поможете мне, это сценарий, по крайней мере, 3 данные в моей базе данных от ID 1, 2, и и и и и и это сценарий. я хочу отобразить этот файл или сообщение, отображение данных в порядке, но я хочу отобразить вот так 3, 2, 1, как это сделать.
годовых

10-10-2014

Предположим, если мы используем 1-й, 2-й и 3-й в классе вместо двух, трех и четырех, как будет ли этот запрос работать в этом случае
Стив Хайли

27-10-2014

Квалификатор desc (обозначающий нисходящий, т.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *