Оператор SQL ORDER BY: синтаксис, примеры
Оператор SQL ORDER BY выполняет сортировку выходных значений. Оператор SQL ORDER BY можно применять как к числовым столбцам, так и к строковым. В последнем случае, сортировка будет происходить по алфавиту.
Оператор SQL ORDER BY имеет следующий синтаксис:
ORDER BY column_name [ASC | DESC]
Сортировка может производиться как по возрастанию, так и по убыванию значений.
- Параметр ASC (по умолчанию) устанавливает порядок сортирования во возрастанию, от меньших значений к большим.
- Параметр DECS устанавливает порядок сортирования по убыванию, от больших значений к меньшим.
Примеры оператора SQL ORDER BY. Имеется следующая таблица Artists:
Singer | Album | Year | Sale |
The Prodigy | Invaders Must Die | 2008 | 1200000 |
Drowning Pool | Sinner | 2001 | 400000 |
Massive Attack | Mezzanine | 1998 | 2300000 |
The Prodigy | Fat of the Land | 1997 | 600000 |
The Prodigy | Music For The Jilted Generation | 1994 | 1500000 |
Massive Attack | 100th Window | 2003 | 1200000 |
Drowning Pool | Full Circle | 2007 | 800000 |
Massive Attack | Danny The Dog | 2004 | |
Drowning Pool | Resilience | 2013 | 500000 |
Пример 1. Вывести все записи таблицы, упорядоченные по названию исполнителя с помощью оператора SQL ORDER BY:
SELECT * FROM Artists ORDER BY Singer
Результат:
Singer | Album | Year | Sale |
Drowning Pool | Sinner | 2001 | 400000 |
Drowning Pool | Full Circle | 2007 | 800000 |
Drowning Pool | Resilience | 2013 | 500000 |
Massive Attack | Mezzanine | 1998 | 2300000 |
Massive Attack | 100th Window | 2003 | 1200000 |
Massive Attack | Danny The Dog | 2004 | 1900000 |
The Prodigy | Invaders Must Die | 2008 | 1200000 |
The Prodigy | Fat of the Land | 1997 | 600000 |
The Prodigy | Music For The Jilted Generation | 1994 | 1500000 |
Пример 2.
SELECT Singer, Album, Year FROM Artists WHERE Year > 2005 ORDER BY Year DESC
Результат:
Singer | Album | Year |
Drowning Pool | Resilience | 2013 |
The Prodigy | Invaders Must Die | 2008 |
Drowning Pool | 2007 |
SQL ORDER BY | ПРЕДЕЛ SQL — базовый SQL
В этой статье рассматриваются два новых предложения SELECT:
-
ORDER BY
упорядочивает результаты запроса. -
LIMIT
ограничивает результирующий набор фиксированным числом строк.
SQL ЗАКАЗАТЬ ПО
Для каждого запроса можно определить разные порядки.
ORDER BY
влияет только на порядок возврата результирующих записей. Это не влияет на результаты запроса.
Вот таблица Customer , используемая в примерах
и LIMIT
:
Вы хотите получить отчет с атрибутами имя_клиента , адрес электронной почты и
ВЫБЕРИТЕ имя_клиента, адрес электронной почты, дату_последнего_заказа ОТ клиента ЗАКАЗАТЬ по 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. | 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. Мы можем потребовать
сочетание этого также. ВЫБЕРИТЕ * ИЗ СТУДЕНЧЕСКОГО ЗАКАЗА ПО МЕТКЕ
id имя класс марка пол 19 оловянный Девять 18 мужской 17 Тумью Шесть 54 9004 7 мужской 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
id имя класс марка 2 Max Ruin Three 90 047 85 3 Арнольд Три 55 1 Джон Део Четыре 75 4 Криш Стар Четыре 60 5 Джон Майк Четыре 60 6 Алекс Джон Четыре 9 0047 55
Прочитайте, как порядок по командам используется для отображения 3 старших записей таблицы учеников
заказ по полю varchar
Вот команда для отображения записей в порядке класса ВЫБЕРИТЕ * ИЗ `студента` ORDER BY class
идентификатор имя класс марка 1 John Deo Четыре 75 4 9 0048 Криш Стар Четыре 60 5 Джон Майк Четыре 60 6 Алекс Джон Четыре 55 2 Макс Руин 900 47 Три 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
Вы увидите такой список. id имя класс марка пол diff 19 9 0047 Жестянка Девять 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 Криш Стар Четыре 9004 7 60 женский 40 5 Джон Майк Четыре 60 женщина 40
Это указано на основе первого символа столбца diff .
Нам нужно изменить значение столбца с помощью CAST, а затем использовать порядок с помощью SELECT * FROM `student` ORDER BY CAST(diff as unsigned) DESC
Теперь вы получите такой список. id имя класс знак пол дифференциал 19 Тинни Девять 18 мужской 82 90 043 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 (обозначающий нисходящий, т.