Сортировка, LIMIT и DISTINCT
057 мин
База возвращает строки без какого-либо гарантированного порядка. Чтобы отсортировать результат, взять первые несколько строк или убрать повторы, есть три команды.
ORDER BY — сортировка
По умолчанию — по возрастанию (ASC). По убыванию — DESC:
По нескольким столбцам: сначала по первому, при равенстве — по второму.
LIMIT — только первые N строк
«Три преподавателя с самой высокой зарплатой»:
Используйте LIMIT всегда вместе с ORDER BY — иначе «какие именно 3» попадут в результат, решит случай.
Для следующей «страницы» есть OFFSET: LIMIT 3 OFFSET 3 — 4-я, 5-я и 6-я строки.
DISTINCT — без повторов
Из каких городов приехали студенты?
DISTINCT применяется ко всей строке: SELECT DISTINCT city, course — разные пары «город + курс».
Где окажется NULL?
PostgreSQL при сортировке считает NULL самым большим значением: при возрастании он в конце, при DESC — в начале. Это можно изменить: ORDER BY scholarship DESC NULLS LAST.
Порядок частей запроса
Части всегда пишутся в таком порядке:
SELECT … FROM … WHERE … ORDER BY … LIMIT …;Выведите name и price пяти самых дешёвых товаров по возрастанию цены. При равной цене — по названию в алфавитном порядке.
Выведите без повторов, какие бренды есть среди товаров (brand).
Запомните
ORDER BY столбец [DESC]— сортировка; несколько столбцов через запятую.LIMIT n— первые n строк; всегда вместе сORDER BY.DISTINCTубирает повторы.