Kodokon kodokon.com

Сортировка и удаление дублей: ORDER BY, LIMIT, DISTINCT

Освой сортировку результатов через ORDER BY, ограничение количества строк через LIMIT и удаление дублей через DISTINCT.

6 мин · 3 вопросов

Открыть этот урок в Kodokon

По умолчанию порядок строк, возвращаемых запросом SELECT, не гарантирован: база данных возвращает их так, как ей удобно. Чтобы задать порядок, добавь ORDER BY и столбец. Сортировка по умолчанию возрастающая (это можно указать явно с помощью ASC); добавь DESC для убывающей сортировки.

SQL
SELECT title, price FROM books ORDER BY price;

SELECT title, price FROM books ORDER BY price DESC;
От самой дешёвой к самой дорогой, затем наоборот

Можно сортировать по нескольким столбцам: ORDER BY genre, price DESC сортирует сначала по жанру, а затем, внутри одного жанра, от самой дорогой к самой дешёвой. Конструкция LIMIT оставляет только первые N строк результата: вместе с ORDER BY она даёт тебе «топ N». А LIMIT 3 OFFSET 2 дополнительно пропустил бы первые 2 строки.

SQL
SELECT title, price FROM books
ORDER BY price DESC
LIMIT 3;
Топ-3 самых дорогих книг

Последний инструмент: DISTINCT, который ставится сразу после SELECT и убирает дубли из результата. В нашей таблице 7 книг, но всего 3 разных жанра: без DISTINCT запрос ниже показал бы 7 строк с повторами.

SQL
SELECT DISTINCT genre FROM books;

SELECT DISTINCT author FROM books;
3 уникальных жанра, затем 6 уникальных авторов

Проверка знаний

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

  1. Как отсортировать книги от самой дорогой к самой дешёвой?
    • ORDER BY price
    • ORDER BY price DESC
    • SORT BY price DESC
  2. Что вернёт SELECT DISTINCT genre FROM books; на нашей таблице?
    • 7 жанров, по одному на книгу
    • Каждый жанр только один раз, то есть 3 строки
    • Самый частый жанр
  3. Что вернёт LIMIT 5, если использовать его без ORDER BY?
    • 5 самых свежих строк
    • 5 строк в порядке, который не гарантирован
    • Синтаксическую ошибку