Примеры сортировки в MySQL

CMS.BY

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

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

В примере идет обращение к таблице table и сортировка выполняется по столбцу column, после выполнения SQL запроса отобразятся все строки с таблицы table с примененной сортировкой по столбцу column, строки будут отсортированы в возрастающем порядке, либо по алфавиту. Чтобы сделать сортировку наоборот, требуется указать вместо ASC - DESC.

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

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

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

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

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

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

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

Сортировка по количеству символов

		SELECT * FROM `table`
ORDER BY CHAR_LENGTH(`name`) DESC
	

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

Иногда возникает проблема, а именно при выполнении подобной сортировки. Проблема возникает из-за того, что даты почему-то хранят в текстовом виде и в результате в итоговой сортировке будут перепутаны месяцы. Решение данной проблемы, это перевод данного поля в тип datetime.

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

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

Благодаря функции FIELD() можно получить записи из базы данных в нужной нам последовательности. В примере показывается как вывести вначале записи с определенным ID.

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

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

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

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

		SELECT * FROM `table`
ORDER BY RAND()
	
Редакция CMS.BY

Редакция CMS.BY

С нами Мир познавать проще и надёжнее

shape

У Вас остались вопросы? Обязательно обратитесь к нам
Мы проконсультируем Вас по любому вопросу в сфере IT

Оставить заявку