сортировка результатов запроса. Сортировка, оператор order by
Скачать 45.53 Kb.
|
Сортировка, оператор ORDER BY При выполнении SELECT запроса, строки по умолчанию возвращаются в неопределенном порядке. Фактический порядок строк в этом случае зависит от плана соединения и сканирования, а также от порядка расположения данных на диске, поэтому полагаться на него нельзя. Для упорядочивания записей используется конструкция ORDER BY. Общая структура запроса с оператором ORDER BY SELECT поля_таблиц FROM список_таблиц ORDER BY столбец_1 [ASC | DESC][, столбец_n [ASC | DESC]]; В описанной структуре запроса необязательные параметры указаны в квадратных скобках.
Сортировка по нескольким столбцам Для сортировки результатов по двум или более столбцам их следует указывать через запятую. SELECT поля_таблиц FROM список_таблиц ORDER BY столбец_1 [ASC | DESC], столбец_2 [ASC | DESC]; Данные будут сортироваться по первому столбцу, но в случае если попадаются несколько записей с совпадающими значениями в первом столбце, то они сортируются по второму столбцу. Количество столбцов, по которым можно отсортировать, не ограничено. Правило сортировки применяется только к тому столбцу, за которым оно следует. ORDER BY столбец_1, столбец_2 DESC не то же самое, что ORDER BY столбец_1 DESC, столбец_2 DESC Примеры использования Выведем названия авиакомпаний в алфавитном порядке из таблицы Company: SELECT name FROM Company ORDER BY name; Сортировка строковых данных осуществляется в лексикографическом (алфавитном) порядке. Выведем всю информацию о полетах, отсортированную по времени вылета самолета в порядке возрастания и по времени прилета в аэропорт в порядке убывания, из таблицы Trip: SELECT * FROM Trip ORDER BY time_out, time_in DESC; В данном примере в начале отсортировывается информация по времени вылета. Затем там, где время вылета совпадает, отсортировывается по времени прилёта. Выведем все данные о покупках, совершенных Headley Quincey, отсортировав их в порядке убывания стоимости товаров: 1. Сначала нужно узнать идентификатор Headley Quincey в таблице FamilyMembers: SELECT member_id from FamilyMembers WHERE member_name = 'Headley Quincey'; 2. Выведем все данные о покупках, совершенных Headley Quincey, из таблицы Payments: SELECT * FROM Payments WHERE family_member = ( SELECT member_id from FamilyMembers WHERE member_name = 'Headley Quincey' ); 3. Отсортируем получившиеся данные в порядке убывания стоимости товара: SELECT * FROM Payments WHERE family_member = ( SELECT member_id from FamilyMembers WHERE member_name = 'Headley Quincey' ) ORDER BY unit_price DESC; Сортировка результатов запроса. Дополнительные условия отбора групп. https://youtu.be/KWCsTdwE4FM |