Desc asc: Какой индекс выбрать ASC или DESC? — Хабр Q&A

Упорядочение по ASC / DESC — с 5 примерами

Введение: Упорядочивание по ASC / DESC в Sql

В операторе SELECT порядок строк в результате не гарантируется. Это означает, что SQL Server возвращает набор результатов с неопределенным порядком строк или, можно сказать, сортировкой строк. Чтобы отсортировать данные в определенном порядке, вы можете использовать ORDER BY ASC/DESC в SQL.

Зачем нужно использовать ORDER BY в SQL?

Когда вы выполняете SQL-запрос с определенным результатом, иногда вам нужно просмотреть данные в отсортированном порядке, например рейтинг студентов, отсортировать стоимость гостиничного номера по самой высокой или самой низкой стоимости и т. д. Затем вы можете использовать ключевое слово Order by ASC / Desc для сортировки данных в определенном порядке.

Что такое заказ от ASC?

ASC = По возрастанию , что означает сортировку результата/данных с определенным столбцом от наименьшего значения к наибольшему значению (например, 1, 2, 3, 4, 5, 6, 7, 8 и т.

д.)

Что такое заказ по DESC?

DESC =  По убыванию  значение, сортировать результат/данные с определенным столбцом от наибольшего значения к наименьшему (например, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10). , 9 …..и так далее)

Синтаксис: 

  ВЫБЕРИТЕ 
select_list
  ИЗ 
имя_таблицы
  ORDER   BY ASC|DESC  

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

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

Примечание. SQL Server использует ASC в качестве порядка сортировки по умолчанию

Пример #1: Сортировать по ASC, сортировать один столбец в порядке возрастания

Примечание. Порядок ASC по умолчанию

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

этот порядок по умолчанию применим для любого общего запроса.

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

  SELECT 
  Имя Клиента
  ИЗ 
  [dbo].[Customers_Tbl]
  ЗАКАЗ   BY 
Customer_Name 

Результат :

Пример #2: ORDER BY DESC, сортировка столбца по убыванию

порядок.

  ВЫБЕРИТЕ 
  Имя Клиента
  ИЗ 
  [dbo].[Customers_Tbl]
  ЗАКАЗ   ПО 
Customer_Name  DESC  

Результат:

Пример #3: Упорядочить / Сортировать несколько столбцов с разным порядком

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

вы можете сделать это, используя приведенный ниже пример. В этом SQL-запросе выполняется Customer_Name и Product_Category для выполнения сортировки DESC и ASC соответственно

  ВЫБОР 
  Customer_Name, Product_Category
  ИЗ 
[dbo].[Customers_Tbl]
  ЗАКАЗАТЬ 
Customer_Name  DESC  ,
Product_Category  ASC  

Результат :

Пример #4: Сортировка столбца на основе функции

вы можете применить опцию ASC/DESC в любой функции в, например Len(), Left query Right() и т. д.…

Как показано ниже, пример пытается отсортировать столбец «Customer_Name» на основе имени с помощью функции подстроки 9.0007

  ВЫБОР 
     Имя Клиента,
     Категория продукта
  ИЗ 
     [dbo].[Customers_Tbl]
  ЗАКАЗАТЬ 
SUBSTRING (Customer_Name , 1, CHARINDEX(' ', Customer_Name ) - 1) ASC       

Пример 5. Сортировка столбца с использованием предложения WHERE

пункт как условие для Product_Category. Результат покажет отсортированный столбец для Customer_Name для всех Product_Category  равно «Мебель».

  ВЫБЕРИТЕ 
     Имя Клиента,
     Категория продукта
  ОТ    
     [dbo].[Customers_Tbl]
  ГДЕ
  Product_Category = 'Мебель'
  ЗАКАЗ   ПО       
     Customer_Name  ASC  

 

sql — сортировка MySQL DESC и ASC

спросил

Изменено 5 лет, 3 месяца назад

Просмотрено 1к раз

У меня есть таблица с полями:

 id | group_id
1 | ноль
2 | ноль
3 | ноль
4 | 4
5 | 4
6 | 4
7 | 7
8 | 7
9 | ноль
 

, и я хотел бы отсортировать его так:

 id | group_id
9 | ноль
7 | 7
8 | 7
4 | 4
5 | 4
6 | 4
3 | ноль
2 | ноль
1 | ноль
 

Таким образом, это будет DESC по идентификатору в целом, но ASC по идентификатору, когда они совместно используют group_id

Спасибо

  • mysql
  • sql
  • sorting

3

Попробуйте

 Выберите id, group_id, объединение(group_id, id) из таблицы в порядке 3 desc, 1
 

Я заставил это работать:

 SELECT id, group_id, rank
ОТ (
  ВЫБЕРИТЕ идентификатор, group_id,
    @rank:=IF(group_id=@group_id,@rank,@rank+1) AS ранг,
    @group_id:=group_id
  ИЗ MyTable ПЕРЕКРЕСТНОЕ СОЕДИНЕНИЕ (ВЫБЕРИТЕ @rank:=0) КАК _init
  ЗАКАЗАТЬ ПО ИДЕНТИФИКАТОРУ DESC
) КАК т
ПОРЯДОК ПО рангу ASC, id ASC;
 

Вывод:

 +----+----------+------+
| идентификатор | идентификатор_группы | ранг |
+----+----------+------+
| 9 | НУЛЕВОЙ | 1 |
| 7 | 7 | 2 |
| 8 | 7 | 2 |
| 4 | 4 | 3 |
| 5 | 4 | 3 |
| 6 | 4 | 3 |
| 3 | НУЛЕВОЙ | 4 |
| 2 | НУЛЕВОЙ | 5 |
| 1 | НУЛЕВОЙ | 6 |
+----+----------+------+
 

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

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

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

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