В sql запросах используют ASC и DESC для сортировки результатов выборки из базы данных.
Но, вот стало интересно, а что же они означают.
Все достаточно просто и прозаично.

Это укороченные английские слова:

ASC
ASCending переводится, как: восходящий, поднимающийся возрастающий.

DESC
DESCending переводится, как: нисходящий, убывающий, падающий.

Использование сортировки в MySQL

Как мы уже поняли ASC — это по возрастанию: от 1 и выше; от a до z, и так далее.

SELECT 
	`id`, `title`, `link`
FROM 
     `table`
ORDER BY 
     `title` ASC

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

SELECT
	`id`, `title`, `link`
FROM
	`table` 
ORDER BY 
	`title` DESC

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

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

SELECT
	`id`, `title`, `link`
FROM 
	`table` 
ORDER BY 
	`id` DESC, `title` DESC

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

Для этого используется sql-функция RAND():

SELECT
	`id`, `title`, `link`
FROM 
	`table` 
ORDER BY 
	RAND()

Сортировка в порядке, определенном пользователем

Если вам нужно получить записи из Базы Данных в нужной вам последовательности, то можете использовать фукцию FIELD().
Следующий запрос выведет сначала все данные с записями в стоблцу BRAND: ‘Asus’,’HP’, ‘Acer’. Именно в таком порядке. Этих записей может быть сколько угодно.

SELECT
	`id`, `title`, `link`, `brand`
FROM 
	`table` 
ORDER BY 
	FIELD(`brand`, 'Asus','HP', 'Acer');

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

SELECT
	`id`, `title`, `link`, `brand`
FROM 
	`table` 
ORDER BY 
	FIELD(`brand`, 'Asus','HP', 'Acer'), `id`;

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

Если данные в базе данных хранятся в обычном текстовом виде (varchar, text и т.д.), например: 08.11.1990 или 08-11-1990.
То нам сначала нужно перевести в формат datetime. В этом нам поможет функция STR_TO_DATE():

SELECT
	`id`, `title`, `link`, `brand`, 
	STR_TO_DATE(`date`, '%d.%m.%Y') AS `date_time`
FROM 
	`table` 
ORDER BY 
	`date_time` DESC

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

В этом случае два аргумента для сортировки.
Первый проверяет значение ячейки price: больше нуля или нет.
Второй аргумент — это как раз сам столбец price

SELECT 
	`id`, `title`, `link`, `brand`, `price`
FROM 
	`table` 
ORDER BY 
	IF(`price` > 0, 0, 1), `price`

Комментариев 2 “ASC DESC расшифровка

  1. web-top on 16.02.2021 at 11:27 пишет:

    Спасибо за столь информативную статью.

  2. Дмитрий on 24.08.2021 at 21:15 пишет:

    » IF(`price` > 0, 0, 1), `price`

    Первый проверяет значение ячейки price: больше нуля или нет.
    Второй аргумент — это как раз сам столбец price»

    Не понятно, что значит 0,0,1 и какие значения они могут принимать, что за что отвечает?

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

Ваш адрес email не будет опубликован.

Навигация по записям