Sql desc: Что делает DESC в SQL?

Содержание

SQL оператор ORDER BY — Oracle PL/SQL •MySQL •MariaDB •SQL Server •SQLite

В этом учебном материале вы узнаете, как использовать SQL оператор ORDER BY с синтаксисом и примерами.

Описание

SQL оператор ORDER BY используется для сортировки записей в наборе результатов запроса SELECT.

Синтаксис

Синтаксис для оператора ORDER BY в SQL.

SELECT expressions
FROM tables
[WHERE conditions]
ORDER BY expression [ ASC | DESC ];

Параметры или аргумент

expressions
Столбцы или расчеты, которые вы хотите получить
tables
Таблицы, из которых вы хотите получить записи. В предложении FROM должна быть указана хотя бы одна таблица
WHERE conditions
Необязательный. Условия, которые должны быть выполнены для записей, которые будут выбраны
ASC
Необязательный. ASC сортирует результирующий набор в порядке возрастания по expressions. Это поведение по умолчанию, если модификатор не указан.
DESC
Необязательный. DESC сортирует результирующий набор в порядке убывания по expressions

Примечание

  • Если модификатор ASC или DESC не указан в предложении ORDER BY, результаты будут отсортированы по expressions в порядке возрастания. Это эквивалентно ORDER BY expressions ASC

Пример — сортировка результатов по возрастанию

Чтобы отсортировать результаты в порядке возрастания, вы можете указать атрибут ASC. Если после поля в предложении ORDER BY не указано значение (ASC или DESC), порядок сортировки по умолчанию будет соответствовать возрастающему. Давайте рассмотрим это дальше.
В этом примере у нас есть таблица customers со следующими данными:

customer_idfirst_namelast_namefavorite_website
4000JustinBiebergoogle.com
5000SelenaGomezbing.com
6000 MilaKunisyahoo.com
7000Tom Cruiseoracle.com
8000JohnnyDeppNULL
9000RussellCrowegoogle.com

Введите следующий SQL оператор.

SELECT * FROM customers ORDER BY last_name;

SELECT *

  FROM customers

ORDER BY last_name;

Будет выбрано 6 записей. Вот результаты, которые вы должны получить.

customer_idfirst_namelast_namefavorite_website
4000JustinBiebergoogle.com
9000RussellCrowegoogle.com
7000TomCruiseoracle.com
8000JohnnyDeppNULL
5000SelenaGomezbing.com
6000 MilaKunisyahoo.com

В этом примере будут возвращены все записи из таблицы customers, отсортированные по полю last_name в порядке возрастания, и будет эквивалентен следующему SQL предложению ORDER BY.

SELECT * FROM customers ORDER BY last_name ASC;

SELECT *

  FROM customers

ORDER BY last_name ASC;

Большинство программистов пропускают атрибут ASC при сортировке в порядке возрастания.

Пример — сортировка результатов по убыванию

При сортировке набора результатов в порядке убывания вы используете атрибут DESC в предложении ORDER BY. Давайте внимательнее посмотрим.
В этом примере у нас есть таблица suppliers со следующими данными:

supplier_idsupplier_name citystate
100YandexMoscowRussian
200GoogleLansingMichigan
300OracleRedwood CityCalifornia
400BingRedmondWashington
500YahooSunnyvaleWashington
600DuckDuckGoPaoliPennsylvania
700QwantParisFrance
800FacebookMenlo ParkCalifornia
900Electronic ArtsSan FranciscoCalifornia

Введите следующий SQL оператор.

SELECT * FROM suppliers WHERE supplier_id > 40 ORDER BY supplier_id DESC;

SELECT *

  FROM suppliers

WHERE supplier_id > 40

ORDER BY supplier_id DESC;

Будет выбрано 5 записей. Вот результаты, которые вы должны получить.

supplier_idsupplier_namecitystate
900Electronic ArtsSan FranciscoCalifornia
800FacebookMenlo ParkCalifornia
700QwantParisFrance
600DuckDuckGoPaoliPennsylvania
500YahooSunnyvaleWashington

В этом примере будет отсортирован набор результатов по полю supplier_id в порядке убывания.

Пример — сортировка результатов по относительной позиции

Вы также можете использовать SQL оператор ORDER BY для сортировки по относительной позиции в наборе результатов, где первое поле в наборе результатов равно 1, второе поле равно 2, третье поле равно 3 и т.д.

В этом примере у нас есть таблица products со следующими данными:

product_idproduct_namecategory_id
1Pear50
2Banana50
3Orange50
4Apple50
5Bread75
6Sliced Ham25
7KleenexNULL

Теперь введите следующий SQL оператор.

SELECT product_id, product_name FROM products WHERE product_name <> ‘Bread’ ORDER BY 1 DESC;

SELECT product_id,

       product_name

  FROM products

WHERE product_name <> ‘Bread’

ORDER BY 1 DESC;

Будет выбрано 6 записей. Вот результаты, которые вы должны получить.

product_idproduct_name
7Kleenex
6Sliced Ham
4Apple
3Orange
2Banana
1Pear

В этом примере результаты сортируются по полю product_id в порядке убывания, поскольку поле product_id находится в позиции № 1 в наборе результатов и будет эквивалентно следующему SQL оператору ORDER BY.

SELECT product_id, product_name FROM products WHERE product_name <> ‘Bread’ ORDER BY product_id DESC;

SELECT product_id,

       product_name

  FROM products

WHERE product_name <> ‘Bread’

ORDER BY product_id DESC;

Пример — использование атрибутов ASC и DESC

При сортировке набора результатов с помощью SQL предложения ORDER BY вы можете использовать атрибуты ASC и DESC в одном операторе SELECT.
В этом примере давайте использовать ту же таблицу products, что и в предыдущем примере.

product_idproduct_namecategory_id
1Pear50
2Banana50
3Orange50
4Apple50
5Bread75
6Sliced Ham25
7KleenexNULL

Теперь введите следующий SQL оператор.

SELECT * FROM products WHERE product_id <> ORDER BY category_id DESC, product_name ASC;

SELECT *

  FROM products

WHERE product_id <>

ORDER BY category_id DESC,

  product_name ASC;

Будет выбрано 6 записей. Вот результаты, которые вы должны получить.

product_idproduct_namecategory_id
5Bread75
4Apple50
2Banana50
3Orange50
1Pear50
6Sliced Ham25

В этом примере возвращаются записи, отсортированные по полю category_id в порядке убывания, а вторичная сортировка — по полю product_name в порядке возрастания.

ORDER BY оператор — Oracle PL/SQL •MySQL •MariaDB •SQL Server •SQLite

Этот SQL руководство объясняет, как использовать SQL

ORDER BY с синтаксисом и примерами.

Описание

SQL предложение ORDER BY используется для сортировки записей для набора результатов SELECT запроса.

Синтаксис

SELECT expressions
FROM tables
[WHERE conditions]
ORDER BY expression [ ASC | DESC ];

Параметры или аргументы

expressions — столбцы или расчеты, которые вы хотите получить.

tables – таблицы из которых вы хотите выгрузить данные. После оператора FROM должна быть указана хотя бы одна таблица.

WHERE conditions. Необязательный. Условия, которые должны быть выполнены для записей, которые будут выбраны.

ASC — необязательный. ASC сортирует набор результатов expressions в порядке возрастания. Этот параметр по умолчанию.

DESC — необязательный. DESC сортирует набор результатов expressions в порядке убывания.

Примечание

Если параметры ASC или DESC не указаны в операторе ORDER BY, то результаты expression будут отсортированы в порядке возрастания. Это эквивалентно

ORDER BY expression ASC.

Пример сортировки без использования ASC / DESC

SELECT supplier_city FROM suppliers WHERE supplier_name = ‘IBM’ ORDER BY supplier_city;

SELECT supplier_city

FROM suppliers

WHERE supplier_name = ‘IBM’

ORDER BY supplier_city;

Этот SQL пример ORDER BY будет возвращать все записи отсортированные по полю supplier_city в порядке возрастания и будет эквивалентно следующему SQL запросу ORDER BY:

SELECT supplier_city FROM suppliers WHERE supplier_name = ‘IBM’ ORDER BY supplier_city ASC;

SELECT supplier_city

FROM suppliers

WHERE supplier_name = ‘IBM’

ORDER BY supplier_city ASC;

Большинство программистов при сортировке в порядке возрастания не указывают параметр ASC.

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

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

SELECT supplier_city FROM suppliers WHERE supplier_name = ‘IBM’ ORDER BY supplier_city DESC;

SELECT supplier_city

FROM suppliers

WHERE supplier_name = ‘IBM’

ORDER BY supplier_city DESC;

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

Пример сортировки по относительной позиции

Вы также можете использовать SQL ORDER BY для сортировки по относительной позиции в наборе результатов, где первое поле в наборе результатов 1, следующее поле 2, и так далее.

SELECT supplier_city FROM suppliers WHERE supplier_name = ‘IBM’ ORDER BY 1 DESC;

SELECT supplier_city

FROM suppliers

WHERE supplier_name = ‘IBM’

ORDER BY 1 DESC;

Этот SQL ORDER BY будет возвращать все записи отсортированные по полю supplier_city в порядке убывания, так как поле supplier_city находится в положении # 1, а набор результатов и будет эквивалентен следующему SQL предложения ORDER BY:

SELECT supplier_city FROM suppliers WHERE supplier_name = ‘IBM’ ORDER BY supplier_city DESC;

SELECT supplier_city

FROM suppliers

WHERE supplier_name = ‘IBM’

ORDER BY supplier_city DESC;

Пример — использования ASC и DESC

При сортировке набора результатов с помощью SQL ORDER BY, вы можете использовать ASC и DESC в одном SQL запросе SELECT.

SELECT supplier_city, supplier_state FROM suppliers WHERE supplier_name = ‘Intel’ ORDER BY supplier_city DESC, supplier_state ASC;

SELECT supplier_city, supplier_state

FROM suppliers

WHERE supplier_name = ‘Intel’

ORDER BY supplier_city DESC, supplier_state ASC;

Этот SQL пример ORDER BY будет возвращать все отсортированные записи по полю supplier_city в порядке убывания, а по полю supplier_state в порядке возрастания.

Сортировка в запросе SQL – SELECT FROM ORDER BY

Согласно первой нормальной форме реляционных баз данных, порядок строк в таблицах не должен иметь значения. Но на практике часто требуется отсортировать информацию перед выводом на экран.

За упорядочивание строк, выгружаемых в SQL-запросе, отвечает предложение ORDER BY. Оно располагается в самом конце запроса:

SELECT <Перечень столбцов>
FROM <Перечень таблиц>
ORDER BY <Условие сортировки>

В условии сортировки указываются столбцы, по которым будут упорядочены полученные строки таблицы:

ORDER BY col1, col2

Порядок сортировки в SQL

Возможны 2 варианта сортировки: по возрастанию и по убыванию. Для указания типа сортировки в запросе после названия столбца указывается ключевое слово ASC (ascending) или DESC (descending), которые определяют возрастающий либо убывающий порядок соответственно. По умолчанию используется тип ASC:

ORDER BY col1
-- следующее предложение будет равнозначным
ORDER BY col1 ACS

Также возможно указать разный порядок для разных столбцов:

ORDER BY col1 DESC, col2 ASC

Для закрепления материала решите задачу на учебной БД:

Необходимо получить список идентификаторов сотрудников, отсортированный по группам в порядке возрастания и дате найма «от новых к старым».

Решение:

SELECT id, Группа, Дата_найма
FROM Сотрудники
ORDER BY Группа, Дата_найма DESC

Пополним синтаксис оператора SELECT предложением ORDER BY (вертикальная черта означает необходимость выбора одного из вариантов):

SELECT [DISTINCT] [Имя_таблицы.]Имя_столбца[, [Имя_таблицы.]Имя_столбца2 …]
FROM [[Имя_базы_данных.]Имя_Схемы.]Имя_таблицы
[WHERE Условие_отбора]
[ORDER BY [Имя_таблицы.]Имя_столбца [ASC | DESC] [, [Имя_таблицы.]Имя_столбца2 [ASC | DESC] …]]
  • < Назад
  • Вперёд >

Если материалы office-menu.ru Вам помогли, то поддержите, пожалуйста, проект, чтобы я мог развивать его дальше.

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

Сортировка и группировка выборки. Операторы GROUP BY и ORDER BY ASC / DESC.

Сортировка данных ORDER BY ASC / DESC.

Иногда нам нужно сделать выборку наших данных так, что бы данные были возвращены в определённом порядке. Для этого в SQL предусмотрена команда ORDER BY. Её синтаксис такой: запрос_выборки ORDER BY поле порядок_сортировки (ASC или DESC).DESC — значит сортировать записи в порядке убывания значения поля, используемого для сортировки (первая запись будет с наибольшим значением). ASC — сортировка в порядке возврастания. ASC можно не указывать, так как он используется по умолчанию. Сортировать можно по нескольким полям, при этом первое указанное поле будет являться основным для сортировки, а остальные поля — дополнительными. Таким образом мы делаем сначала сортировку по первому полю, затем сортируем данные по второму, но порядок вывода данных по первому полю сохраняется. 

SELECT *
FROM users
ORDER BY users.registration_datetime DESC

В данном случае полученные результаты из таблицы users будут возвращены в порядке их даты регистрации, причем сначала будут выведены данные пользователей которые были зарегистрированы позже всех, а потом данные более ранних зарегистрированных пользователей.

Группировка выборки с помощью GROUP BY.

Группировка используется для объединения выбранных записей по указанному полю в одну запись. Чаще всего это используется для последующего применения специальных операторов, таких как COUNT, MAX, MIN, SUM, AVG. То есть если в выбранных изначально записях значение указанного для группировки поля будет совпадать, то такие записи будут объединены в одну для возвращаения результата запроса. Кстати таким же образом можно установить уникальность возвращаемых записей, почти аналогично оператору DISTINCT. Можно осуществлять группировку по нескольким полям. Все null-значения одинаковы для этого оператора (следует быть внимательным, чтобы такие значения не участвовали в группировке или проводить группировку по другим полям). 

SQL ORDER BY Ключевое слово

ORDER BY ключевое слово используется для сортировки набора результатов.


SQL ORDER BY Ключевое слово

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

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

SQL ORDER BY Синтаксис

SELECT column_name , column_name
FROM table_name
ORDER BY column_name , column_name ASC|DESC;



Демонстрационная база данных

В этом уроке мы будем использовать w3big образец базы данных.

Ниже приводится выбранные «сайты» таблица данных:

+----+--------------+---------------------------+-------+---------+
| id | name         | url                       | alexa | country |
+----+--------------+---------------------------+-------+---------+
| 1  | Google       | https://www.google.cm/    | 1     | USA     |
| 2  | 淘宝          | https://www.taobao.com/   | 13    | CN      |
| 3  | 本教程      | http://www.w3big.com/    | 4689  | CN      |
| 4  | 微博          | http://weibo.com/         | 20    | CN      |
| 5  | Facebook     | https://www.facebook.com/ | 3     | USA     |
+----+--------------+---------------------------+-------+---------+

ORDER BY экземпляра

Следующий SQL заявление, чтобы выбрать все сайты из списка «Веб-сайты» и отсортированы по колонке «Алексы»:

примеров

SELECT * FROM Веб — сайты ЗАКАЗАТЬ BY Alexa;

Выход Исполнение:



ORDER BY примеры DESC

Следующий SQL заявление, чтобы выбрать все сайты из списка «Сайты» и следуйте колонке «Алексы» в порядке убывания:

примеров

SELECT * FROM Веб — сайты ЗАКАЗАТЬ BY Alexa DESC;

Выход Исполнение:



ORDER BY несколько столбцов

Следующий SQL заявление, чтобы выбрать все сайты из списка «Сайты» и следовать «страна» и «Алексы» колонки рода:

примеров

SELECT * FROM Веб — сайты ЗАКАЗАТЬ BY страна, Alexa;

Выход Исполнение:

Функции сортировки в MySQL

В этой статье приведены примеры использования оператора ORDER BY для сортировки записей в MySQL.

Синтаксис оператора ORDER BY:
SELECT 
	* 
FROM 
	`table`
ORDER BY 
	`столбец` [ASC | DESC]

1

Направление сортировки

ASC – (по умолчанию, необязательный). Сортирует набор в порядке возрастания или по алфавиту.

SELECT 
	* 
FROM 
	`table` 
ORDER BY 
	`name` ASC

DESC – сортирует в порядке убывания.

SELECT
	* 
FROM
	`table` 
ORDER BY 
	`name` DESC

2

Сортировка по нескольким столбцам

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

SELECT
	* 
FROM 
	`table` 
ORDER BY 
	`name` DESC, `text` DESC

3

Сортировка по определенной последовательности

С помощью функции FIELD() можно получить записи из БД в нужной последовательности, например вывести первыми записи с определенными `id`.

SELECT 
	* 
FROM 
	`table` 
ORDER BY 
	FIELD(`id`, 1,2,3)

Также можно скомбинировать сортировку из нескольких полей и показать первыми приоритетные записи, а далее по алфавиту.

SELECT 
	* 
FROM 
	`table` 
 ORDER BY 
 	FIELD(`id`, 1,2,3) DESC, `name`

Или убрать в конец ненужные записи:

SELECT 
	* 
FROM 
	`table` 
ORDER BY 
	FIELD(`id`, 55), `name`

4

Сортировка по цене, но исключая нулевые значения

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

SELECT 
	*
FROM 
	`table` 
ORDER BY 
	IF(`price` > 0, 0, 1), `price`

5

Сортировка по данным из другой таблицы

К примеру имеется таблица брендов и товаров, нужно отсортировать бренды по количеству товаров.

SELECT 
	*, 
	(SELECT COUNT(*) FROM `prods` WHERE `brand_id` = `brands`.`id`) AS `prod_count` 
FROM 
	`brands` 
ORDER BY 
	`prod_count` DESC

6

Сортировка в случайном порядке

SELECT 
	* 
FROM 
	`table` 
ORDER BY 
	RAND()

7

Сортировка дат

Проблема возникает если даты хранятся в текстовом виде (например 23.09.2020). Если отсортировать таблицу по такому полю, то результате будут перепутаны месяцы.

Текстовую дату нужно перевести в тип datetime c помощью функции STR_TO_DATE(), указав нужный формат:

SELECT
	*, 
	STR_TO_DATE(`date`, '%d.%m.%Y') AS `tmp_date`
FROM 
	`table` 
ORDER BY 
	`tmp_date` DESC

8

Проблема с тапами данных

Если в сортируемом поле содержатся одновременно текст и цифры, а нужно отсортировать только по цифрам, то данные нужно привести к числовому типу:

SELECT
	*, 
	CAST(`name` AS SIGNED) AS `name_tmp` 
FROM 
	`table` 
ORDER BY 
	`name_tmp`

или

SELECT
	*
FROM 
	`table` 
ORDER BY 
	CAST(`name` AS SIGNED)

sql — Как найти повторяющуюся строку, когда любое одно слово из столбца desc соответствует группе

У меня есть такой результат:

Мне нужно обновить столбец «flag» как дубликат, когда любое одно слово из строки совпадает со вторым рядом в группе столбца «mfgid».

--test dataset
declare @table as table
        (id int,
         mfgid int,
         [desc] varchar(100))
insert into @table
values  (1,111,'abc xyz pqr'),
        (2,111,'abc tyu fgh'),
        (3,222,'abc pqr'),
        (4,222,'lmn stu'),
        (5,333,'pqr spd hki abc'),
        (6,333,'lmn jsk pqr klo')

Как я могу это сделать?

1

sachi 20 Окт 2018 в 12:57

2 ответа

Лучший ответ

Два возможных решения ниже:

--test dataset
declare @table as table
        (id int,
         mfgid int,
         [desc] varchar(100))
insert into @table
values  (1,111,'abc xyz pqr'),
        (2,111,'abc tyu fgh'),
        (3,222,'abc pqr'),
        (4,222,'lmn stu'),
        (5,333,'pqr spd hki abc'),
        (6,333,'lmn jsk pqr klo')

Решение 1: Если в строке только 4 слова (на основе вашего скриншота)

 ;with cte2 as
       (select *
        from (select id,
                     mfgid,
                     parsename(replace(s.[desc],' ','.'),1) as [a1],
                     parsename(replace(s.[desc],' ','.'),2) as [a2],
                     parsename(replace(s.[desc],' ','.'),3) as [a3],
                     parsename(replace(s.[desc],' ','.'),4) as [a4]
              from @table as s) as a
        unpivot (testval FOR val IN (a1, a2, a3, a4)) unpvt
        )

 select m.id, m.mfgid, m.[desc], t.flag
 from @table as m
 outer apply
    (select top (1) 'duplicate' as flag 
     from cte2 as a 
        join cte2 as b 
            on a.mfgid = b.mfgid
               and a.id != b.id
               and a.testval = b.testval
               and m.mfgid = a.mfgid) as t

тест здесь

Решение 2: Если в строке более 4 слов

;with cte as
      ( select t.*, s.[value] 
        from @table as t
             cross apply 
                (select ltrim(rtrim(split.a.value('.','varchar(100)'))) as [value]
                 from (select cast('<M>'+replace([desc],' ','</M><M>')+'</M>' as xml) as data) as a 
                 cross apply data.nodes ('/M') as split(a)
                 ) as s
      )

select m.id, m.mfgid, m.[desc], t.flag
from @table as m
     outer apply
        (select top (1) 'duplicate' as flag
         from cte as a 
            join cte as b 
                on a.mfgid = b.mfgid
                   and a.id != b.id
                   and a.Value = b.Value
                   and m.mfgid = a.mfgid) as t

тест здесь

0

Vasily Ivoyzha 22 Окт 2018 в 06:50

Это предполагает, что OP использует SQL Server 2016+, так как они не сообщили нам версию:

WITH Split AS(
    SELECT T.id,
           T.mfgid,
           T.[desc],
           SS.[value]
    FROM @table T
        CROSS APPLY STRING_SPLIT([desc],' ') SS)
SELECT S.id,
       S.mfgid,
       S.[desc],
       CASE MAX(Dups) WHEN 0 THEN NULL ELSE 'Duplicate' END AS Flag
FROM Split S
     CROSS APPLY (SELECT COUNT(*) AS [Dups]
                  FROM Split ca
                  WHERE ca.mfgid = S.mfgid
                    AND ca.[value] = S.[value]
                    AND ca.id != S.id) C
GROUP BY S.id,
         S.mfgid,
         S.[desc];

0

Larnu 20 Окт 2018 в 11:16

DESC & ASC Запрос с ПРИМЕРОМ

Сортировка результатов

При использовании команды SELECT результаты были возвращены в том же порядке, в котором записи были добавлены в базу данных. Это порядок сортировки по умолчанию. В этом разделе мы рассмотрим, как можно отсортировать результаты нашего запроса. Сортировка — это просто перегруппировка результатов нашего запроса определенным образом. Сортировку можно выполнять по одному столбцу или по нескольким столбцам. Это может быть сделано для чисел, строк, а также для типов данных даты.

Что такое ORDER BY в MySQL?

MySQL ORDER BY используется вместе с запросом SELECT для упорядоченной сортировки данных.Предложение MySQL ORDER BY используется для сортировки наборов результатов запроса в возрастающем или убывающем порядке.

 Оператор SELECT ... [условие WHERE | GROUP BY `field_name (s)` HAVING condition] ORDER BY `field_name (s)` [ASC | DESC]; 

ЗДЕСЬ

  • «Оператор SELECT …» — это обычный запрос выбора
  • «|» представляет альтернативы
  • «[WHERE condition | GROUP BY` field_name (s) `HAVING condition» — необязательное условие, используемое для фильтрации наборов результатов запроса.
  • «ORDER BY» выполняет сортировку набора результатов запроса.
  • «[ASC | DESC]» — ключевое слово, используемое для сортировки наборов результатов в возрастающем или убывающем порядке. Примечание ASC используется по умолчанию.

Что такое ключевые слова DESC и ASC?

ASC — это краткая форма для возрастания

MySQL DESC — краткая форма для убывания

Он используется для сортировки результатов запроса в стиле сверху вниз.

Используется для сортировки результатов запроса в стиле снизу вверх.

При работе с типами данных даты самая ранняя дата отображается вверху списка.

. При работе с типами дат самая последняя дата отображается вверху списка.

При работе с числовыми типами данных самые низкие значения отображаются вверху списка.

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

При работе со строковыми типами данных набор результатов запроса сортируется от тех, которые начинаются с буквы A, до буквы Z.

При работе со строковыми типами данных сортируется набор результатов запроса от тех, которые начинаются с буквы Z и переходят к букве A.

Ключевые слова SQL DESC и ASC используются вместе с оператором SELECT и предложением ORDER BY MySQL.

Синтаксис DESC и ASC

Ключевое слово сортировки DESC SQL имеет следующий базовый синтаксис.

 ВЫБРАТЬ {fieldName (s) | *} FROM tableName (s) [WHERE condition] ORDER BY fieldname (s) ASC / DESC [LIMIT N] 

HERE

  • SELECT {fieldName (s) | *} FROM tableName (s) — это оператор, содержащий поля и таблицы, из которых следует получить набор результатов.
  • [WHERE condition] не является обязательным, но может использоваться для фильтрации данных в соответствии с заданным условием.
  • ORDER BY имя (а) поля является обязательным и является полем, по которому должна выполняться сортировка. Ключевое слово MySQL DESC указывает, что сортировка должна быть в порядке убывания.
  • [LIMIT] является необязательным, но может использоваться для ограничения количества результатов, возвращаемых из набора результатов запроса.

Примеры:

Давайте теперь посмотрим на практический пример —

Выполнение вышеуказанного скрипта в рабочей среде MySQL против myflixdb дает нам следующие результаты, показанные ниже.

  99049 
членский_номер полные_имена пол дата_ рождения физический_адрес почтовый_адрес contct_number адрес эл. 4 Личная сумка 0759 253 542 Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра.
2 Джанет Смит Джонс Женский 23-06-1980 Мелроуз 123 NULL NULL Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра.
3 Роберт Фил Мужской 12-07-1989 3rd Street 34 NULL 12345 Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра.
4 Глория Уильямс Женщина 14-02-1984 2nd Street 23 NULL NULL NULL
5 Леонард Хофстадтер Мужской NULL Woodcrest NULL 845738767 NULL
6 Sheldon Cooper Male NULL Woodcrest NULL 976736763 NULL
7 Koothra Rappra Rappra NULL Woodcrest NULL 938867763 NULL
8 Leslie Winkle Мужской 14-02-1984 Woodcrest NULL 987636553 NULL Howard Wolowitz Мужской 24-08-1981 900 54 Южный Парк П.О. Box 4563 987786553

Предположим, отдел маркетинга хочет, чтобы данные участников были расположены в порядке убывания даты рождения. Это поможет им своевременно отправлять поздравления с днем ​​рождения. Мы можем получить указанный список, выполнив запрос, как показано ниже —

 SELECT * FROM members ORDER BY date_of_birth DESC; 

Выполнение вышеуказанного сценария в рабочей среде MySQL для myflixdb дает следующие результаты, показанные ниже.

Тот же запрос в порядке возрастания

SELECT * FROM members ORDER BY date_of_birth ASC

Примечание. Значения NULL означают отсутствие значений (кроме нуля или пустой строки).Обратите внимание на то, как они были отсортированы.

Другие примеры

Давайте рассмотрим следующую SQL-сортировку по сценарию, в котором перечислены все записи участников.

Выполнение вышеуказанного сценария дает следующие результаты, показанные ниже.

  99049 
членский_номер полные_имена пол дата_ рождения физический_адрес почтовый_адрес contct_number адрес эл. 4 Личная сумка 0759 253 542 Этот адрес электронной почты защищен от спам-ботов.У вас должен быть включен JavaScript для просмотра.
2 Джанет Смит Джонс Женский 23-06-1980 Мелроуз 123 NULL NULL Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра.
3 Роберт Фил Мужской 12-07-1989 3rd Street 34 NULL 12345 Этот адрес электронной почты защищен от спам-ботов.У вас должен быть включен JavaScript для просмотра.
4 Глория Уильямс Женщина 14-02-1984 2nd Street 23 NULL NULL NULL
5 Леонард Хофстадтер Мужской NULL Woodcrest NULL 845738767 NULL
6 Sheldon Cooper Male NULL Woodcrest NULL 976736763 NULL
7 Koothra Rappra Rappra NULL Woodcrest NULL 938867763 NULL
8 Leslie Winkle Мужской 14-02-1984 Woodcrest NULL 987636553 NULL Howard Wolowitz Мужской 24-08-1981 900 54 Южный Парк П.О. Box 4563 987786553 NULL

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

 ВЫБРАТЬ * ИЗ `members` ЗАКАЗАТЬ ПО` полу`; 
  1449 Male 
членский_номер полные_имена пол дата_ рождения физический_адрес почтовый_адрес contct_number адрес эл. 4 Личная сумка 0759 253 542 Этот адрес электронной почты защищен от спам-ботов.У вас должен быть включен JavaScript для просмотра.
2 Джанет Смит Джонс Женский 23-06-1980 Мелроуз 123 NULL NULL Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра.
4 Глория Уильямс Женщина 14-02-1984 2nd Street 23 NULL NULL NULL
3 Роберт Фил Мужчина 12-07 -1989 3rd Street 34 NULL 12345 Этот адрес электронной почты защищен от спам-ботов.У вас должен быть включен JavaScript для просмотра.
5 Леонард Хофстадтер Мужской NULL Woodcrest NULL 845738767 NULL
6 Sheldon Cooper Male NULL Woodcrest 976736763 NULL
7 Rajesh Koothrappali Male NULL Woodcrest NULL 938867763 NULL
8 Leslie Winkle54 Woodcrest NULL 987636553 NULL
9 Howard Wolowitz Мужской 24-08-1981 SouthPark P.О. Поле 4563 987786553 NULL

«Женские» члены были отображены первыми, а затем «Мужские» члены, это потому, что когда предложение ORDER BY DESC используется без указания ключевого слова ASC или MySQL DESC, по умолчанию MySQL отсортировал набор результатов запроса в порядке возрастания.

Давайте теперь посмотрим на пример, который выполняет сортировку с использованием двух столбцов ; первый — , отсортированный в порядке возрастания по умолчанию, а второй столбец — отсортированный в порядке убывания .

 ВЫБРАТЬ * ИЗ `members` ORDER BY` пол`, `date_of_birth` DESC; 

Выполнение вышеуказанного сценария в рабочей среде MySQL для myflixdb дает следующие результаты.

Столбец пола был отсортирован по умолчанию в возрастающем порядке, тогда как столбец даты рождения был явно отсортирован в порядке убывания

Почему мы можем использовать DESC и ASC?

Предположим, мы хотим распечатать историю платежей для члена видеотеки, чтобы помочь ответить на запросы на стойке регистрации, не было бы логичнее распечатать платежи в нисходящем хронологическом порядке, начиная с недавнего платежа на более ранний платеж. ?

DESC в SQL — это ключевое слово, которое может пригодиться в таких ситуациях.Мы можем написать запрос, который сортирует список в порядке убывания по дате платежа.

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

Ключевое слово ASC пригодится в таких ситуациях; мы можем получить список фильмов, отсортированный по названию категории и названию фильма в возрастающем порядке.

Сводка

  • Сортировка результатов запроса — это переупорядочивание строк, возвращаемых из набора результатов запроса, в порядке возрастания или убывания.
  • Ключевое слово DESC в SQL используется для сортировки набора результатов запроса в порядке убывания.
  • Ключевое слово ASC используется для сортировки набора результатов запроса в порядке возрастания.
  • И DESC, и ASC работают вместе с ключевым словом ORDER BY. Их также можно использовать в сочетании с другими ключевыми словами, такими как предложение WHERE и LIMIT
  • По умолчанию для ORDER BY, когда ничего явно не указано, является ASC.

SQL | Заявление DESCRIBE — GeeksforGeeks

Предварительное условие: Sql Create Clause,

Как следует из названия, DESCRIBE используется для описания чего-либо. Поскольку в базе данных есть таблицы, поэтому мы используем команду DESCRIBE или DESC (обе одинаковые) для описания структуры таблицы.
Синтаксис :

  ОПИСАТЬ один;
  ИЛИ
DESC один; 
 

Примечание: Мы можем использовать DESCRIBE или DESC (оба Case Insensitive ).

Предположим, наша таблица с именем , одна имеет 3 столбцов с именами FIRST_NAME , LAST_NAME и SALARY , и все они могут содержать нулевых значений.

Выход :


  Имя Тип NULL 
СИМВОЛ FIRST_NAME (25)
LAST_NAME CHAR (25)
ЗАРПЛАТНАЯ ИНФОРМАЦИЯ (6)
 
  • Здесь, выше, при использовании DESC или DESCRIBE мы можем видеть структуру таблицы, но не на вкладке консоли, структура таблицы показана на вкладке описания из Программное обеспечение системы баз данных.
  • Итак, команда desc или describe показывает структуру таблицы, которая включает в себя имя столбца, тип данных столбца и возможность пустого значения , что означает, что этот столбец может содержать нулевые значения или нет .
  • Все эти функции таблицы описаны во время Создание таблицы.

Пример:

Создание таблицы или определение структуры таблицы

создать таблицу один
(
id int не null,
именной символ (25)
)
 

Здесь мы создали таблицу с именем и одним , а ее столбцы — ID , NAME , а id not null type i.e, мы не можем помещать нулевые значения в столбец ID , но мы можем помещать нулевые значения в столбец NAME .

Пример для демонстрации DESC:

Шаг 1 : Определение структуры таблицы, т.е. создание таблицы:

создать таблицу один
(
 id int не null,
 имя char (25),
 город варчар2 (25)
)
 

Шаг 2 : Отображение структуры таблицы:

DESC один
  ИЛИ
ОПИСАТЬ один
 
Выход:
Имя Нулевой Тип
ID не равен нулю INT
ИМЯ СИМВОЛ (25)
ГОРОД VARCHAR2 (25)
 

Примечание : здесь ID столбца имеет тип , не нулевой тип , а остальные 2 столбца могут содержать нулевые значения.

Примечание : Вы должны выполнять команду DESC только в системном программном обеспечении, потому что эта команда не будет работать ни в одном редакторе. Обязательно запускайте эту команду только на вашей собственной установленной базе данных

Ссылки : Oracle.com

Эта статья предоставлена ​​ Rajat Rawat 4 . Если вам нравится GeeksforGeeks, и вы хотели бы внести свой вклад, вы также можете написать статью на сайте deposit.geeksforgeeks.org или отправить свою статью по почте @ geeksforgeeks.орг. Посмотрите, как ваша статья появляется на главной странице GeeksforGeeks, и помогите другим гикам.

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

SQL | ORDER BY — GeeksforGeeks

Оператор ORDER BY в sql используется для сортировки извлеченных данных по возрастанию или убыванию в соответствии с одним или несколькими столбцами.

  • По умолчанию ORDER BY сортирует данные в порядке возрастания .
  • Мы можем использовать ключевое слово DESC для сортировки данных в порядке убывания и ключевое слово ASC для сортировки в порядке возрастания.

Синтаксис всех способов использования ORDER BY показан ниже:

  • Сортировка по одному столбцу: Для сортировки в порядке возрастания или убывания мы можем использовать ключевые слова ASC или DESC соответственно.
    Синтаксис:
      SELECT * FROM имя_таблицы ORDER BY имя_столбца ASC | DESC 
    
      table_name : имя таблицы.
      имя_столбца : имя столбца, в соответствии с которым необходимо расположить данные.
      ASC : для сортировки данных в порядке возрастания. DESC : для сортировки данных в порядке убывания.
      | : используйте ASC или DESC для сортировки в порядке возрастания или убывания
     
  • Сортировка по нескольким столбцам: Для сортировки в порядке возрастания или убывания мы можем использовать ключевые слова ASC или DESC соответственно. Для сортировки по нескольким столбцам разделите имена столбцов оператором (,).
    Синтаксис:
      SELECT * FROM имя_таблицы ORDER BY column1 ASC | DESC, column2 ASC | DESC 
     


Запросы:

  • Сортировка по одному столбцу : В этом примере мы извлечем все данные из таблицы Student и отсортируем результат в порядке убывания в соответствии с столбцом РОЛЛ_НО .
     SELECT * FROM Student ORDER BY ROLL_NO DESC;
     

    Выход:

    900X N
    ROLL_NO НАЗВАНИЕ АДРЕС ТЕЛЕФОН Возраст
    8 X
    8 X
    ALIP 19
    7 ROHIT BALURGHAT XXXXXXXXXX 18
    6 DHANRAJ BARABAJAR XXXXXXXXXX
    20 XXXXXXXXXX 20 XXXXXXXXXX 19
    4 DEEP RAMNAGAR XXXXXXXXXX 18
    3 RIYANKA SILIGURI XXXXXXXXX54 XXXXXXXXX54 XXXXXXXXX54 XXXXXXXXX54 XXXXXXXXXX 19
    1 HARSH DELHI XXXXXXXXXX 18

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

  • Сортировка по нескольким столбцам : В этом примере мы извлечем все данные из таблицы Student , а затем отсортируем результат в порядке возрастания в соответствии со столбцом Age . а затем в порядке убывания согласно столбцу ROLL_NO .
     SELECT * FROM Student ORDER BY Age ASC, ROLL_NO DESC;
     

    Выход:

    900XX 900OHAL 900UR 900OHAL NIRA XXXXXXXXXX
    ROLL_NO ИМЯ АДРЕС ТЕЛЕФОН Возраст
    X
    18
    4 ГЛУБИНА RAMNAGAR XXXXXXXXXX 18
    1 HARSH DELHI XXXXXXXXXX 18
    NIRA 19
    5 SAPTARHI KOLKATA XXXXXXXXX 19
    2 PRATIK BIHAR XXXXXXXXX54 BIHAR XXXXXXXXX54 BIHAR XXXXXXXXX54 XXXXXXXXXX 20
    3 RIYANKA SILIGURI XXXXXXXXXX 20

    В приведенном выше выводе вы можете видеть, что сначала результат отсортирован в порядке возрастания в соответствии с возрастом.

    Есть несколько строк с одинаковым возрастом. Теперь при дальнейшей сортировке этого набора результатов в соответствии с ROLL_NO строки с одинаковым возрастом будут отсортированы в соответствии с ROLL_NO в порядке убывания.

  • Обратите внимание, что: ASC является значением по умолчанию для предложения ORDER BY. Итак, если вы не укажете ничего после имени столбца в предложении ORDER BY, выходные данные по умолчанию будут отсортированы в порядке возрастания.

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

     SELECT * FROM Student ORDER BY Age, ROLL_NO DESC;
     

    Выход:

    900XX 900OHAL 900UR 900OHAL NIRA XXXXXXXXXX
    ROLL_NO ИМЯ АДРЕС ТЕЛЕФОН Возраст
    X
    18
    4 ГЛУБИНА RAMNAGAR XXXXXXXXXX 18
    1 HARSH DELHI XXXXXXXXXX 18
    NIRA 19
    5 SAPTARHI KOLKATA XXXXXXXXX 19
    2 PRATIK BIHAR XXXXXXXXX54 BIHAR XXXXXXXXX54 BIHAR XXXXXXXXX54 XXXXXXXXXX 20
    3 RIYANKA SILIGURI XXXXXXXXXX 20

Автор этой статьи Harsh Agarwal используя вклад.geeksforgeeks.org или отправьте свою статью по адресу [email protected]. Посмотрите, как ваша статья появляется на главной странице GeeksforGeeks, и помогите другим гикам.

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

Вниманию читателя! Не прекращайте учиться сейчас. Получите все важные концепции теории CS для собеседований SDE с помощью курса CS Theory Course по приемлемой для студентов цене и будьте готовы к работе в отрасли.

SQL Server: пункт ORDER BY


В этом руководстве по SQL Server объясняется, как использовать предложение ORDER BY в SQL Server (Transact-SQL) с синтаксисом и примерами.

Описание

Предложение ORDER BY SQL Server (Transact-SQL) используется для сортировки записей в наборе результатов. Предложение ORDER BY можно использовать только в операторах SELECT.

Синтаксис

Синтаксис предложения ORDER BY в SQL Server (Transact-SQL):

 выражения SELECT
ИЗ столов
[ГДЕ условия]
ORDER BY выражение [ASC | DESC]; 

Параметры или аргументы

выражения
Столбцы или вычисления, которые вы хотите получить.
столов
Таблицы, из которых вы хотите получить записи. В предложении FROM должна быть хотя бы одна таблица.
ГДЕ условия
Необязательно. Условия, которые должны быть выполнены для выбора записей.
ASC
Необязательно. Он сортирует набор результатов в возрастающем порядке по выражению (по умолчанию, если модификатор не указан).
DESC
Необязательно. Он сортирует набор результатов в порядке убывания по выражению .

Примечание

  • Если модификатор ASC или DESC не указан в предложении ORDER BY, результаты будут отсортированы по выражению в порядке возрастания. Это эквивалентно ORDER BY выражение ASC .

Пример — сортировка без использования атрибута ASC / DESC

Предложение ORDER BY SQL Server можно использовать без указания значения ASC или DESC. Когда этот атрибут опущен в предложении ORDER BY, по умолчанию используется порядок сортировки ASC или возрастающий порядок.

Например:

 ВЫБЕРИТЕ last_name
ОТ сотрудников
ГДЕ employee_id> 1000
ЗАКАЗАТЬ ПО last_name; 

Этот пример ORDER BY SQL Server вернет все записи, отсортированные по полю last_name в возрастающем порядке, и будет эквивалентен следующему предложению ORDER BY:

 ВЫБЕРИТЕ last_name
ОТ сотрудников
ГДЕ employee_id> 1000
ЗАКАЗАТЬ ПО last_name ASC; 

Большинство программистов пропускают атрибут ASC при сортировке по возрастанию.

Пример — сортировка по убыванию

При сортировке набора результатов в порядке убывания вы используете атрибут DESC в предложении ORDER BY.

Например:

 ВЫБЕРИТЕ last_name
ОТ сотрудников
ГДЕ first_name = 'Сара'
ЗАКАЗАТЬ ПО last_name DESC; 

Этот пример ORDER BY SQL Server вернет все записи, отсортированные по полю last_name в порядке убывания.

Пример — сортировка по относительному положению

Вы также можете использовать предложение ORDER BY SQL Server для сортировки по относительной позиции в наборе результатов, где первое поле в наборе результатов равно 1.Следующее поле — 2 и так далее.

Например:

 ВЫБЕРИТЕ last_name
ОТ сотрудников
ГДЕ last_name = 'Андерсон'
ЗАКАЗАТЬ ПО 1 DESC; 

Этот SQL Server ORDER BY вернет все записи, отсортированные по полю last_name в порядке убывания, поскольку поле last_name находится в позиции № 1 в наборе результатов и будет эквивалентно следующему предложению ORDER BY:

 ВЫБЕРИТЕ last_name
ОТ сотрудников
ГДЕ last_name = 'Андерсон'
ЗАКАЗАТЬ ПО last_name DESC; 

Пример — использование атрибутов ASC и DESC

При сортировке набора результатов с помощью предложения SQL Server ORDER BY можно использовать атрибуты ASC и DESC в одном операторе SELECT.

Например:

 ВЫБЕРИТЕ last_name, first_name
ОТ сотрудников
ГДЕ last_name = 'Джонсон'
ORDER BY last_name DESC, first_name ASC; 

Этот SQL Server ORDER BY вернет все записи, отсортированные по полю last_name в порядке убывания, с вторичной сортировкой по first_name в возрастающем порядке.

Как упорядочить по двум столбцам в SQL?

База данных:
Операторы:
ORDER BY, ASC, DESC
Задача:

Вам необходимо отобразить записи из данной таблицы, отсортированные по двум столбцам.

Пример:

В нашей базе данных есть таблица с именем employee со следующими столбцами: id , first_name , last_name и salary .

id first_name last_name salary
1 Лиза Ульман 3000
2 Ада Мюллер 2400
3 Thomas Зеленый 2400
4 Майкл Мюллер 3000
5 Мэри Зеленый 2400

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

Решение:
ВЫБЕРИТЕ идентификатор,
  имя,
  фамилия,
  оплата труда
ОТ сотрудника
ЗАКАЗАТЬ ПО зарплате DESC, last_name;
 

Этот запрос возвращает отсортированные записи по двум столбцам: зарплата и last_name .

id first_name last_name salary
4 Майкл M uller 3000
1 Lisa U lman 3000
3 Thomas G reen 2400
5 Мэри G reen 2400
2 Ada M uller 2400
Обсуждение:

Если вы хотите выбрать записи из таблицы, но хотите, чтобы они были отсортированы по двум столбцам, вы можете сделать это с помощью ORDER BY .Это предложение находится в конце вашего SQL-запроса.

После ключевого слова ORDER BY добавьте имя столбца, по которому вы хотите сначала отсортировать записи (в нашем примере — зарплата). Затем после запятой добавьте второй столбец (в нашем примере last_name ). Вы можете изменить порядок сортировки (по возрастанию или убыванию) отдельно для каждого столбца. Если вы хотите использовать возрастающий (от меньшего к большему) порядок, вы можете использовать ключевое слово ASC ; это ключевое слово является необязательным, так как это порядок по умолчанию, когда ничего не указано.Если вы хотите использовать порядок убывания, поместите ключевое слово DESC после соответствующего столбца (в этом примере мы использовали порядок убывания для столбца зарплаты ).

В нашем примере мы сначала отсортировали результат по зарплате в порядке убывания (от более высоких зарплат к более низким), а затем по фамилии в порядке возрастания в уже отсортированных записях.

Обзор SQL Order by Clause и примеры

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

Как только мы выполняем оператор Select в SQL Server, он возвращает несортированные результаты. Мы можем определить последовательность столбца в списке столбцов оператора выбора. Нам может потребоваться отсортировать набор результатов на основе определенного значения столбца, условия и т. Д. Мы можем отсортировать результаты в порядке возрастания или убывания с помощью предложения ORDER BY в операторе Select.

Синтаксис предложения SQL Order By

Мы можем увидеть синтаксис для предложения SQL Order by следующим образом.

ВЫБРАТЬ * ИЗ имя_таблицы ORDER BY [имя_столбца] ASC | DESC

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

  • ASC : мы можем указать ASC , чтобы отсортировать результат в порядке возрастания.
  • DESC : мы можем указать DESC , чтобы отсортировать результат в порядке убывания

По умолчанию SQL Server сортирует результаты с помощью предложения ORDER BY в порядке возрастания.Указание ASC в предложении order by необязательно.

Давайте рассмотрим предложение SQL ORDER BY на примерах.

В этой статье я использую базу данных AdventureWorks2017 для всех примеров. Выполните следующий запрос в SSMS. Мы не используем предложение ORDER BY в этом запросе.

SELECT [NationalIDNumber]

, [JobTitle]

, [BirthDate]

, [MaritalStatus]

, [Gender]

, [ModifiedDate]

, [SalariedFlag4, [SalariedFlag]79.[HumanResources]. [Сотрудник]

Пример 1: Сортировка результатов по столбцу, определенному в операторе Select, с использованием предложения SQL Order By

Предположим, нам нужно отсортировать результат по столбцу BirthDate. Этот столбец также указан в списке столбцов оператора Select.

SELECT [NationalIDNumber]

, [JobTitle]

, [BirthDate]

, [MaritalStatus]

, [Gender]

, [ModifiedDate]

, [SalariedFlag4, [SalariedFlag]7.[HumanResources]. [Сотрудник]

Распоряжение по дате рождения

Он использует метод сортировки по умолчанию (по возрастанию), потому что мы не указали порядок сортировки в этом запросе.

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

SELECT [NationalIDNumber]

, [JobTitle]

, [BirthDate]

, [MaritalStatus]

, [Gender]

, [ModifiedDate]

, [SalariedFlag4, [SalariedFlag]7.[HumanResources]. [Сотрудник]

Упорядочить по дате рождения DESC

Пример 2: Сортировка результатов в столбце, не определенном в операторе Select, с использованием предложения SQL Order By

В предыдущем примере мы отсортировали результаты по столбцу , дата рождения . Мы также указали этот столбец в списке столбцов оператора select.

Предположим, мы хотим отсортировать результаты по столбцу дня рождения, но этот столбец не указан в операторе выбора.Мы по-прежнему можем сортировать результаты по столбцу, не определенному в операторе Select.

ВЫБРАТЬ [NationalIDNumber]

, [JobTitle]

, [MaritalStatus]

, [Gender]

, [ModifiedDate]

, [SalariedFlag]

FROM [AdventureWorks] [Employees].

Заказ по дате рождения DESC

Пример 3: Сортировка результатов по позициям столбцов в операторе Select с использованием предложения SQL Order By

В предыдущих примерах мы указали имя столбца в предложении Order by для сортировки результатов в порядке возрастания или убывания.Мы также можем указать позицию столбца в предложении Order by.

SELECT [NationalIDNumber]

, [JobTitle]

, [BirthDate]

, [MaritalStatus]

, [Gender]

, [ModifiedDate]

, [SalariedFlag4, [SalariedFlag]7 9000] HumanResources]. [Сотрудник]

Сортировать по 3 DESC

В этом запросе дата рождения столбца находится на 3-й позиции; поэтому мы можем использовать три в предложении Order by для сортировки результатов по данным этого столбца.

Примечание: Я бы не рекомендовал использовать позицию столбца в предложении Order By. Вы всегда должны использовать имя столбца в предложении Order by.

  • Узнать имя столбца сортировки может быть неудобно. Если мы используем большой запрос, становится трудно определить позицию каждого столбца.
  • Если мы вносим какие-либо изменения в список столбцов оператора Select, нам нужно изменить значение в предложении order by, чтобы отразить правильное положение столбца no

Пример 4: Сортировка результатов по нескольким столбцам в операторе Select с использованием предложения SQL Order By

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

  • SickLeaveHours в порядке возрастания
  • Отпуск в порядке по убыванию

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

ВЫБРАТЬ [NationalIDNumber]

, SickLeaveHours

, [Vacationhours]

, [BirthDate]

, [MaritalStatus]

, [Gender]

, [ModifiedDate]

FROM [Дата изменения]

[Дата изменения]

FROM [Дата изменения]

[Дата] AdventureWorks2017].[HumanResources]. [Employee]

, где MaritalStatus = ‘M’

Order by SickLeaveHours ASC, [Vacationhours] desc

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

Пример 5: Сортировка результатов по столбцам псевдонимов в операторе Select с использованием предложения SQL Order By

Часто мы определяем псевдоним столбца в операторе Select.Предположим, вы хотите получить максимальное значение в столбце с помощью функции max. Мы можем указать имя столбца, которое будет отображаться в выводе. Если мы не укажем имя столбца, мы получим результат без имени столбца.

SELECT Max (SickLeaveHours)

FROM [AdventureWorks2017]. [HumanResources]. [Employee]

Где MaritalStatus = ‘M’

На следующем снимке экрана вы можете видеть, что мы получаем результат без имени столбца.

Давайте повторно выполним запрос, используя псевдоним.

ВЫБЕРИТЕ Max (SickLeaveHours) как MAXSickHours

FROM [AdventureWorks2017]. [HumanResources]. [Employee]

Где MaritalStatus = ‘M’

Мы также можем использовать предложение Order by для столбца псевдонима. Предположим, мы хотим определить псевдоним для SickLeaveHours как [SickHours].Кроме того, мы хотим использовать этот псевдоним в предложении Order by для сортировки результатов в порядке убывания.

ВЫБЕРИТЕ [NationalIDNumber]

, SickLeaveHours как [SickHours] — Столбец Алиаса

, [Vacationhours]

, [Дата рождения]

, [MaritalStatus]

, [Gender]

, [Пол]

, [SalariedFlag]

ИЗ [AdventureWorks2017].[HumanResources]. [Сотрудник]

Где MaritalStatus = ‘M’

Сортировать по [SickHours] DESC —Сортировать по псевдониму

На следующем снимке экрана мы видим столбец псевдонима SickHours , отсортированный в порядке убывания.

Пример 6: Сортировка результатов с помощью выражения в операторе Select с использованием предложения SQL Order By

Мы также можем использовать выражения в предложении Order by. Предположим, мы хотим отсортировать год в столбце даты.Давайте сначала запустим запрос без предложения Order by.

SELECT top 10 [NationalIDNumber]

, SickLeaveHours как [SickHours]

, [Vacationhours]

, [BirthDate]

, [MaritalStatus]

, [Gender]

, [Изменено] SalariedFlag]

ИЗ [AdventureWorks2017]. [HumanResources]. [Сотрудник]

Где MaritalStatus = ‘M’

Теперь мы хотим отсортировать по столбцу Дата рождения ежегодно в порядке возрастания.Я использую предложение TOP , чтобы ограничить результат вывода. Мы используем функцию DATEPART , чтобы получить указанную часть даты. В этом запросе мы хотим извлечь год для сортировки данных с помощью функции DATEPART .

SELECT top 10 [NationalIDNumber]

, SickLeaveHours как [SickHours]

, [Vacationhours]

, [BirthDate]

, [MaritalStatus]

, [Gender]

, [Изменено] SalariedFlag]

ИЗ [AdventureWorks2017].[HumanResources]. [Сотрудник]

Где MaritalStatus = ‘M’

Упорядочить по DATEPART (ГОД, Дата рождения) ASC

Пример 6: Сортировка результатов с помощью сортировки с использованием предложения SQL Order By

Предположим, у нас есть таблица, содержащая столбец с данными, чувствительными к регистру. Мы могли бы захотеть отсортировать результаты, указав сопоставление в предложении Order by.

Давайте создадим таблицу с сопоставлением Latin1_General_CI_AI , а позже мы отсортируем ее, используя другое сопоставление Latin1_General_CS_AS.

Вы можете найти определение обоих сопоставлений в следующей таблице.

Latin1_General_CI_AI

Latin1-General, без учета регистра, без учета диакритических знаков, без учета канатического типа, без учета ширины

Latin1_General_CS_AS

Latin1-General, с учетом регистра, с учетом диакритических знаков, без учета символов типа, без учета ширины

Использовать SQLShackDemo

Go

СОЗДАТЬ ТАБЛИЦУ # temp1 (EmpName nvarchar (20) COLLATE Latin1_General_CI_AI)

GO

INSERT INTO # temp1 VALUES (N’Rajendra ‘, N’Rajendra’) ‘), (Н’раджЕНДРА’), (Н’раджендра ‘), (Н’РАДЖЕНДРА’);

Давайте отсортируем результаты без указания каких-либо условий сортировки.Он использует сопоставление, определенное в столбце EmpName (Latin1_General_CI_AI).

Запрос 1:

ВЫБРАТЬ EmpName

FROM # temp1

ORDER BY EmpName;

Запрос 2:

ВЫБРАТЬ EmpName

FROM # temp1

ЗАКАЗАТЬ ПО EmpName COLLATE Latin1_General_CS_AS

В следующем выводе вы можете увидеть разницу в результатах обоих запросов.В Query1 он использует сортировку столбцов по умолчанию ( Latin1_General_CI_AI ) для сортировки результатов. В Query2 для сортировки результатов используется сопоставление ( Latin1_General_CS_AS ), указанное в предложении Order by.

Пример 7: Сортировка результатов с помощью функции ранжирования с использованием пункта

SQL Order By

Мы также можем использовать встроенные функции R anking в SQL Server с предложением Order by. Мы можем использовать функции ранга для определения ранга в наборе строк.У нас есть следующие функции ранжирования в SQL Server.

  1. ROW_NUMBER
  2. КЛАССИФИЦИРОВАТЬ
  3. DENSE_RANK
  4. НТИЛЬ

Давайте рассмотрим использование предложения Order By с каждой функцией ранжирования.

НОМЕР РЯД

Мы можем использовать ROW_NUMBER для предоставления номера строки в указанном столбце на основе предложения Order By.

В следующем запросе мы хотим получить номер строки для значений столбца SickLeaveHours в порядке возрастания.

SELECT [NationalIDNumber]

, SickLeaveHours

, ROW_NUMBER () OVER (ЗАКАЗАТЬ ПО [SickLeaveHours] ASC) AS «Row_Number»

FROM [AdventureWorks2017]. [HumanResources]. [HumanResources]. [Employee4 ‘

RANK: В функции Rank мы получаем рейтинг для каждой строки на основе указанного значения столбца.Если имеется несколько строк с одинаковым значением, он дает одинаковый ранг, но пропускает следующий номер в последовательности.

В следующем запросе мы указали функцию Row_Number () и RANK () вместе с предложением Order by для столбца SickLeaveHours .

SELECT [NationalIDNumber]

, SickLeaveHours

, ROW_NUMBER () OVER (ЗАКАЗАТЬ ПО [SickLeaveHours] ASC) AS «Row_Number»

, RANK () OVER (ЗАКАЗАТЬ SickLeaveHours 9000s ].[HumanResources]. [Сотрудник]

, где MaritalStatus = ‘M’

На следующем снимке экрана мы видим результат, отсортированный с использованием SickLeaveHours . В функции Rank пропускается значение 2-3, потому что у нас есть 3 строки для SickLeaveHours 20.

Точно так же мы можем использовать DENSE_RANK () и NTILE (4) с предложением Order by в операторе select.

SELECT [NationalIDNumber]

, SickLeaveHours

, ROW_NUMBER () OVER (ORDER BY [SickLeaveHours] ASC) AS «Номер строки»

, RANK () OVER (ORDER BY SickLeaveHours) как «Rank4» () ВЫШЕ (ЗАКАЗ ПО SickLeaveHours) КАК «DENSE_Rank»,

NTILE (4) ВЫШЕ (ЗАКАЗ НА SickLeaveHours) КАК [NTILE]

ОТ [AdventureWorks2017].[HumanResources]. [Сотрудник]

, где MaritalStatus = ‘M’

В выходных данных мы видим DENSE_RANK (). дает рейтинг для каждой строки на основе условий, указанных в предложении Order by. Он не пропускает следующее значение в ранге, если у нас есть несколько строк с похожими значениями.

Функция NTILE делит полные наборы результатов на указанное количество групп.

Пример 8: Ограничение количества строк с помощью предложения SQL Order By

Мы можем пропустить некоторые строки с помощью OFFSET и FETCH в предложении Order by.Во-первых, давайте запустим следующий запрос и просмотрим результат в SSMS.

SELECT [NationalIDNumber]

, [JobTitle]

, [BirthDate]

, [MaritalStatus]

, [Gender]

, [ModifiedDate]

, [SalariedFlag4, [SalariedFlag]7 9000] HumanResources]. [Сотрудник]

, где Salariedflag = 0

Упорядочить по дате рождения

На следующем снимке экрана мы видим, что этот запрос возвращает 238 строк.

Предположим, мы хотим пропустить первые 100 строк из отсортированного набора результатов и вернуть все оставшиеся строки. Мы можем использовать OFFSET с предложением Order by.

SELECT [NationalIDNumber]

, [JobTitle]

, [BirthDate]

, [MaritalStatus]

, [Gender]

, [ModifiedDate]

, [SalariedFlag4, [SalariedFlag]7.[HumanResources]. [Сотрудник]

, где Salariedflag = 0

Упорядочить по дате рождения OFFSET 100 ROWS;

На выходе мы получаем 138 строк, потому что он пропускает первые 100 строк из отсортированного результата.

Предположим, мы хотим пропустить 100 строк из отсортированного результата. Далее нам нужны только первые 20 строк из набора результатов. Мы можем указать следующие значения вместе с предложением Order by.

  • OFFSET значение 100
  • FETCH NEXT значение 20

Выполните следующий запрос и просмотрите результат.

SELECT [NationalIDNumber]

, [JobTitle]

, [BirthDate]

, [MaritalStatus]

, [Gender]

, [ModifiedDate]

, [SalariedFlag4, [SalariedFlag]7 9000] HumanResources]. [Сотрудник]

Где Salariedflag = 0

Упорядочить по дате рождения

СМЕЩАТЬ 100 СТРОК НАБИРАТЬ ТОЛЬКО СЛЕДУЮЩИЕ 20 СТРОК;

На выходе мы видим, что только первые 20 строк после пропуска 100 записей в отсортированном результате.

Примечание : мы можем использовать OFFSET и FETCH в предложении SQL Order By, начиная с SQL Server 2012.

Как сертифицированный MCSA и сертифицированный инструктор Microsoft в Гургаоне, Индия, с 13-летним опытом работы, Раджендра работает в различных крупных компаниях, специализируясь на оптимизации производительности, мониторинге, высокой доступности и стратегиях и внедрении аварийного восстановления. Он является автором сотен авторитетных статей о SQL Server, Azure, MySQL, Linux, Power BI, настройке производительности, AWS / Amazon RDS, Git и связанных технологиях, которые на сегодняшний день просмотрели более 10 миллионов читателей.

Он является создателем одного из крупнейших бесплатных онлайн-сборников статей по одной теме с его серией из 50 статей о группах доступности SQL Server Always On. Основываясь на своем вкладе в сообщество SQL Server, он был отмечен различными наградами, включая престижную награду «Лучший автор года» в 2020 и 2021 годах на SQLShack.

Радж всегда заинтересован в новых задачах, поэтому, если вам нужна помощь консультанта по любому вопросу, затронутому в его трудах, с ним можно связаться в Раджендре[email protected]

Посмотреть все сообщения от Rajendra Gupta

Последние сообщения от Rajendra Gupta (посмотреть все)

LIMIT и ORDER BY в SQL-запросах

Содержание

С помощью SELECT мы смогли точно указать, сколько столбцов мы хотели в возвращаемом наборе данных. С LIMIT мы можем ограничить количество строк, возвращаемых :

  ВЫБРАТЬ *
ОТ baby_names
LIMIT 1;
  

Результат:

состояние секс год название штук
АК F 2010 София 60

Довольно просто, LIMIT не намного больше, чем само ключевое слово, за которым следует количество строк, которые мы хотим видеть.

Зачем использовать LIMIT , когда, ну, мы могли бы просто иметь всех данных? Помните, что еще данных не всегда лучше. Но главная проблема заключается в том, что в реальном мире получение строк данных требует времени вычислений. LIMIT — хороший способ сократить время выполнения. Даже до того, как вы перейдете к экспорту данных, возврат 1 000 000 строк будет медленнее, чем возврат 10 строк при прочих равных условиях.

Обратите внимание на порядок синтаксиса

На данный момент мы рассмотрели только три различных пункта.Итак, главное, на что следует обратить внимание, — это конкретный порядок и расположение оператора SQL: точно так же, как FROM следует после предложения SELECT , LIMIT следует после обоих.

Таким образом, следующие запросы не будут работать:

  ВЫБРАТЬ *
ПРЕДЕЛ 1
FROM baby_names;
  
  ВЫБРАТЬ *
ПРЕДЕЛ 1
FROM baby_names;
  

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

Основной синтаксис:

  ЗАКАЗАТЬ "some_column_name"
  

Вот автономный пример:

  ВЫБРАТЬ *
ОТ baby_names
ЗАКАЗАТЬ ПО количеству;
  

Усеченные результаты:

состояние секс год название штук
АК F 2010 Алайна 5
АК F 2010 Алисия 5
АК F 2010 Алия 5
АК F 2010 Янтарь 5
АК F 2010 Андреа 5

Сортировка по убыванию

По умолчанию ORDER BY сортирует в порядке возрастания .Когда дело доходит до чисел, это сначала означает наименьших .

Если мы хотим найти строки с наибольшими значениями count , мы используем ключевое слово DESC . Синтаксис выглядит так:

  ЗАКАЗАТЬ ПО "some_column_name" DESC
  

Если мы хотим явно указать в порядке возрастания , мы используем ключевое слово ASC :

  ЗАКАЗАТЬ "some_column_name" ASC
  

Для сортировки таблицы детских имен в порядке убывания из отсчетов :

  ВЫБРАТЬ *
ОТ baby_names
ORDER BY count DESC;
  

Усеченные результаты:

состояние секс год название штук
США F 2010 Изабелла 22883
США F 2012 София 22267
США M 2010 Иаков 22082
США F 2011 София 21816
США F 2013 София 21147

Сортировка по нескольким столбцам

В случае, если столбец, по которому выполняется сортировка, имеет повторяющиеся значения, т.е.е. привязка , мы можем указать больше столбцов для использования в критериях сортировки. Просто добавьте дополнительные имена столбцов и ключевые слова для упорядочивания — например, ASC и DESC — через запятых . Ключевые слова ORDER BY используются только один раз.

Следующий (несколько бессмысленный) запрос вернет строки в обратном алфавитном порядке: состояние , затем в порядке возрастания count , то есть наименее распространенные имена:

  ВЫБРАТЬ *
ОТ baby_names
ORDER BY состояние DESC, счет ASC;
  

Усеченные результаты:

состояние секс год название штук
WY F 2010 Али 5
WY F 2010 Алиса 5
WY F 2010 Элли 5
WY F 2010 Ариана 5
WY F 2010 Арианна 5
WY F 2010 Обри 5

Чтобы изменить порядок, чтобы сверху были самые последние года и наиболее распространенные имена :

  ВЫБРАТЬ *
ОТ baby_names
ORDER BY состояние DESC, год DESC, количество DESC;
  
состояние секс год название штук
WY F 2014 Оливия 40
WY M 2014 Джексон 34
WY F 2014 Бруклин 32
WY F 2014 Эмма 32
WY M 2014 Мейсон 30

Возможность упорядочить строки результатов особенно полезна при использовании LIMIT , так как позволяет быстро возвращать только «верхние 3» или «нижние 10» результатов.

Оставить комментарий

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

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