ОсновыНачальный
DISTINCT
Убирает дубликаты из результата запроса.
Синтаксис
SELECT DISTINCT column1, column2 FROM table;Объяснение
SELECT DISTINCT возвращает только уникальные строки. Для этого база сортирует или хэширует результат — на больших таблицах это дорого.
Если дубликаты возникают из-за JOIN или неправильной схемы — лучше исправить запрос, а не добавлять DISTINCT.
Пример
-- Уникальные страны пользователей
SELECT DISTINCT country FROM users ORDER BY country;
-- COUNT уникальных
SELECT COUNT(DISTINCT user_id) AS unique_users FROM visits;Связанные термины
Анекдоты по теме
Пользователь: — Почему мой запрос ничего не вернул? DBA: — А ты проверил регистр? Пользователь: — Да. DBA: — А пробелы? Пользователь: — Да. DBA: — А кодировку? Пользователь: — О господи...
— Мой запрос работает 10 секунд. Как ускорить? — Покажи EXPLAIN ANALYZE. — Вот: Seq Scan, cost=0..999999. — Индекс. — Уже 0.5 секунды. — Теперь смотри на остальные узлы.
— Мой EXPLAIN показывает Seq Scan. — Добавь индекс. — Добавил. Всё равно Seq Scan. — Сколько строк в таблице? — 50. — Оптимизатор умнее тебя. При 50 строках индекс медленнее.