Что делает distinct в sql?
Если в выборке два поля, помогите разобраться, он по обоим уникальность считает
Дом, ремонт, стройка
Животные и питомцы
Учёба и образование
Психология
Фотография
Пока нет лидеров с лучшими ответами.
Ваш вопрос
Если в выборке два поля, помогите разобраться, он по обоим уникальность считает
4o
DISTINCT убирает из результата запроса повторяющиеся строки, оставляя только уникальные комбинации значений в выбранных столбцах.
Без DISTINCT | С DISTINCT город встречается столько раз, сколько у него заказов | город встречается один раз результат может содержать десятки одинаковых строк | результат содержит только уникальные строки подходит когда нужны все записи | подходит когда нужен список без повторов
Пример без DISTINCT: SELECT city FROM orders
Если в таблице заказов сто заказов из Москвы, вы получите сто одинаковых строк «Москва».
Пример с DISTINCT: SELECT DISTINCT city FROM orders
Теперь «Москва» встретится в результате ровно один раз, сколько бы заказов из неё ни было.
Важный момент: если в SELECT перечислено несколько столбцов, DISTINCT смотрит на уникальность всей комбинации сразу, а не каждого столбца по отдельности. Например:
SELECT DISTINCT city, status FROM orders
Строка «Москва, доставлен» и строка «Москва, отменён» — это две разные уникальные комбинации, обе останутся в результате, даже если город один и тот же.
Ещё стоит иметь в виду, что DISTINCT требует от базы сравнить все строки между собой, а на большой таблице это может быть заметно медленнее обычного SELECT, особенно без индекса на нужных столбцах.
На практике DISTINCT часто применяют вместе с ORDER BY, чтобы отсортировать уникальный список, и тогда стоит проверить, что сортировка идёт по тем же столбцам, что стоят после DISTINCT, иначе результат может выглядеть неожиданно.
Пока нет премиум-вопросов в подборке
Не нашли то, что искали?
Задайте свой вопрос
Лучший ответ
4.1 Fast
4.1 Fast
Что делает distinct в sql?
Вывод: DISTINCT схлопывает одинаковые строки результата в одну, оставляя только уникальные варианты.
Причина, почему это нужно: без него запрос вроде SELECT city FROM orders вернёт город столько раз, сколько у него заказов, и если вы просто хотели список городов, получите простыню дублей.
SELECT DISTINCT city FROM orders
Причина, почему с ним нужно быть аккуратным: DISTINCT смотрит на всю строку выборки целиком. Добавите второй столбец в SELECT — уникальность будет считаться уже по паре значений, а не по одному, и дублей может внезапно снова стать много.
И да, на большой таблице DISTINCT не бесплатный, сравнение строк между собой требует ресурсов.