В 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`
Спасибо за столь информативную статью.
» IF(`price` > 0, 0, 1), `price`
Первый проверяет значение ячейки price: больше нуля или нет.
Второй аргумент — это как раз сам столбец price»
Не понятно, что значит 0,0,1 и какие значения они могут принимать, что за что отвечает?
у вас ошибка по https сертификату, поправте