Бесплатный вебинар
«как найти любимую работу»
Подарки на 150 000 ₽ за участие
Живой эфир
Записи не будет!
00:00:00:00
дн.ч.мин.сек.

Уникальные продукты по ключевому слову: DISTINCT и COUNT в MySQL

Быстрый ответ

Чтобы установить количество уникальных значений в столбце таблицы MySQL, используйте COUNT(DISTINCT column_name). Например, чтобы рассчитать количество уникальных пользователей по user_id в таблице users, примените следующий запрос:

SQL
Скопировать код
SELECT COUNT(DISTINCT user_id) FROM users;

Ответ будет указывать на количество уникальных пользовательских идентификаторов в таблице.

Кинга Идем в IT: пошаговый план для смены профессии

Разбор функции COUNT(DISTINCT)

Тонкости подсчета: использование WHERE

Если требуется отфильтровать подсчет по определенным условиям, используйте COUNT(DISTINCT) вместе с WHERE:

SQL
Скопировать код
SELECT COUNT(DISTINCT user_id) FROM users WHERE active = 1;

В этом примере рассчитывается количество активных пользователей, исключая неактивных.

Подробнее об этом расскажет наш спикер на видео
skypro youtube speaker

Защита от SQL-инъекций: принцип «лучше перебдеть»

В случае работы с PHP используйте подготовленные запросы для защиты от SQL-инъекций:

php
Скопировать код
$stmt = $pdo->prepare('SELECT COUNT(DISTINCT column_name) FROM table WHERE condition = :value');
$stmt->execute(['value' => $userInput]);

Этот подход повышает безопасность и оптимизирует выполнение запросов.

Безопасность базы данных: оградите свои ключи

Регулирование доступа и прав доступа помогает обеспечивать целостность и безопасность ваших данных.

Визуализация

Возьмите корзину, полную разнообразной выпечки 🧺: [🥐, 🍞, 🥖, 🥐, 🍩, 🥖, 🥐, 🍞, 🥐, 🍩].

Применение DISTINCT можно сравнить с убиранием дубликатов: Витрина пекарни после применения DISTINCT 🧁: [🥐, 🍞, 🥖, 🍩].

А COUNT покажет, сколько у нас разных видов выпечки: Ответ пекаря с COUNT(DISTINCT) 🧑‍🍳: "У нас представлены четыре различных вида выпечки!"

Подсчет подмножеств: сила GROUP BY

При работе с большими наборами данных можно использовать GROUP BY для подсчета числа уникальных записей по каждой категории:

SQL
Скопировать код
SELECT category, COUNT(DISTINCT product_id) FROM products GROUP BY category;

Это ускоряет подсчет в каждой конкретной категории.

Использование GROUP BY: алтернатива DISTINCT

GROUP BY сам по себе формирует уникальные группы, так что в большинстве случаев использование DISTINCT не требуется.

SQL
Скопировать код
SELECT type, COUNT(product_id) FROM products GROUP BY type;

Освоение искусства балансировки производительности в SQL

Эффективная оптимизация с помощью вложенных запросов

При подсчете уникальных значений можно оптимизировать производительность, применяя вложенные запросы:

SQL
Скопировать код
SELECT COUNT(1) FROM (SELECT DISTINCT user_id FROM sessions) as unique_sessions;

Здесь таблица sessions используется только однажды для улучшения производительности запроса.

Оптимизационный трюк: переключитесь на COUNT(1)

Часто COUNT(1) работает быстрее, чем COUNT(*), благодаря меньшей нагрузке на систему.

SQL
Скопировать код
SELECT COUNT(1) FROM (SELECT DISTINCT user_id FROM sessions) as unique_sessions;

Полезные материалы

  1. Официальный справочник MySQL поможет вам разобраться с функцией COUNT().
  2. Руководство по оптимизации DISTINCT даст полезные рекомендации по эффективному использованию DISTINCT.
  3. Тред на Stack Overflow об оптимизации использования COUNT и DISTINCT в SQL.
  4. Подробное руководство по использованию GROUP BY в сочетании с COUNT и DISTINCT.
  5. Концентрированный урок от W3Schools по использованию функций COUNT, AVG и SUM в SQL.
Проверь как ты усвоил материалы статьи
Пройди тест и узнай насколько ты лучше других читателей
Какой SQL-запрос используется для подсчета уникальных пользователей по user_id в таблице users?
1 / 5