DISTINCT в MySQL. Введение
DISTINCT в MySQL используется для удаления дубликатов из выборки. Он применяется в аналитике, отчётности, маркетинге, IoT и любых сценариях, где важны только уникальные значения. Ниже приведены синтаксис, типовая конструкция и 100 практических примеров использования.
Синтаксис
SELECT DISTINCT column
FROM table;SELECT DISTINCT col1, col2
FROM table;SELECT COUNT(DISTINCT column)
FROM table;Типовая конструкция
SELECT DISTINCT country
FROM customers
ORDER BY country;100 примеров
1. Уникальные значения поля email
SELECT DISTINCT email
FROM demo;2. Уникальные значения поля phone
SELECT DISTINCT phone
FROM demo;3. Уникальные значения поля country
SELECT DISTINCT country
FROM demo;4. Уникальные значения поля city
SELECT DISTINCT city
FROM demo;5. Уникальные значения поля region
SELECT DISTINCT region
FROM demo;6. Уникальные значения поля ip
SELECT DISTINCT ip
FROM demo;7. Уникальные значения поля device
SELECT DISTINCT device
FROM demo;8. Уникальные значения поля browser
SELECT DISTINCT browser
FROM demo;9. Уникальные значения поля os
SELECT DISTINCT os
FROM demo;10. Уникальные значения поля language
SELECT DISTINCT language
FROM demo;11. Уникальные значения поля category
SELECT DISTINCT category
FROM demo;12. Уникальные значения поля tag
SELECT DISTINCT tag
FROM demo;13. Уникальные значения поля author
SELECT DISTINCT author
FROM demo;14. Уникальные значения поля status
SELECT DISTINCT status
FROM demo;15. Уникальные значения поля role
SELECT DISTINCT role
FROM demo;16. Уникальные значения поля dept
SELECT DISTINCT dept
FROM demo;17. Уникальные значения поля job
SELECT DISTINCT job
FROM demo;18. Уникальные значения поля course
SELECT DISTINCT course
FROM demo;19. Уникальные значения поля campaign
SELECT DISTINCT campaign
FROM demo;20. Уникальные значения поля sku
SELECT DISTINCT sku
FROM demo;21. Уникальные значения поля currency
SELECT DISTINCT currency
FROM demo;22. Уникальные значения поля payment_method
SELECT DISTINCT payment_method
FROM demo;23. Уникальные значения поля channel
SELECT DISTINCT channel
FROM demo;24. Уникальные значения поля platform
SELECT DISTINCT platform
FROM demo;25. Уникальные значения поля vendor
SELECT DISTINCT vendor
FROM demo;26. Уникальные значения поля brand
SELECT DISTINCT brand
FROM demo;27. Уникальные значения поля model
SELECT DISTINCT model
FROM demo;28. Уникальные значения поля color
SELECT DISTINCT color
FROM demo;29. Уникальные значения поля size
SELECT DISTINCT size
FROM demo;30. Уникальные значения поля material
SELECT DISTINCT material
FROM demo;Ещё примеры
31. Уникальные комбинации имени и фамилии
SELECT DISTINCT first_name, last_name
FROM users;32. Уникальные комбинации города и региона
SELECT DISTINCT city, region
FROM addresses;33. Уникальные товары по категории и бренду
SELECT DISTINCT category, brand
FROM products;34. Уникальные пары студент-курс
SELECT DISTINCT student_id, course_id
FROM enrollments;35. Уникальные авторы и теги постов
SELECT DISTINCT author_id, tag
FROM posts;36. Уникальные устройства по ОС и версии
SELECT DISTINCT os, version
FROM devices;37. Уникальные IP и браузер
SELECT DISTINCT ip, browser
FROM logins;38. Уникальные кампании по каналу и валюте
SELECT DISTINCT campaign_id, channel, currency
FROM ads;39. Уникальные комбинации даты и склада
SELECT DISTINCT date, warehouse
FROM stock;40. Уникальные сотрудники по отделу и роли
SELECT DISTINCT dept, role
FROM employees;41. Уникальные комбинации автор-издатель
SELECT DISTINCT author, publisher
FROM books;42. Уникальные пары курс-оценка
SELECT DISTINCT course_id, grade
FROM grades;43. Уникальные комбинации сенсор-день
SELECT DISTINCT sensor_id, DATE(measured_at)
FROM sensors;44. Уникальные студенты по группе и году
SELECT DISTINCT group_id, year
FROM students;45. Уникальные комбинации ip-локация
SELECT DISTINCT ip, location
FROM traffic;46. Уникальные пары проект-менеджер
SELECT DISTINCT project_id, manager_id
FROM projects;47. Уникальные комбинации регион-валюта
SELECT DISTINCT region, currency
FROM sales;48. Уникальные авторы по стране и языку
SELECT DISTINCT country, language
FROM authors;49. Уникальные комбинации билет-событие
SELECT DISTINCT event_id, ticket_type
FROM tickets;50. Уникальные комбинации клиент-продавец
SELECT DISTINCT client_id, seller_id
FROM deals;Ещё примеры
51. Количество уникальных клиентов
SELECT COUNT(DISTINCT customer_id)
FROM orders;52. Количество уникальных стран
SELECT COUNT(DISTINCT country)
FROM customers;53. Количество уникальных городов
SELECT COUNT(DISTINCT city)
FROM addresses;54. Количество уникальных товаров
SELECT COUNT(DISTINCT product_id)
FROM order_items;55. Количество уникальных категорий
SELECT COUNT(DISTINCT category)
FROM products;56. Количество уникальных сессий
SELECT COUNT(DISTINCT session_id)
FROM logs;57. Количество уникальных кампаний
SELECT COUNT(DISTINCT campaign_id)
FROM ads;58. Количество уникальных студентов
SELECT COUNT(DISTINCT student_id)
FROM grades;59. Количество уникальных сенсоров
SELECT COUNT(DISTINCT sensor_id)
FROM sensors;60. Количество уникальных IP
SELECT COUNT(DISTINCT ip)
FROM logins;61. Количество уникальных языков
SELECT COUNT(DISTINCT lang)
FROM posts;62. Количество уникальных брендов
SELECT COUNT(DISTINCT brand)
FROM products;63. Количество уникальных моделей
SELECT COUNT(DISTINCT model)
FROM products;64. Количество уникальных складов
SELECT COUNT(DISTINCT warehouse)
FROM stock;65. Количество уникальных пользователей
SELECT COUNT(DISTINCT user_id)
FROM messages;66. Количество уникальных проектов
SELECT COUNT(DISTINCT project_id)
FROM tasks;67. Количество уникальных валют
SELECT COUNT(DISTINCT currency)
FROM payments;68. Количество уникальных методов оплаты
SELECT COUNT(DISTINCT payment_method)
FROM payments;69. Количество уникальных платформ
SELECT COUNT(DISTINCT platform)
FROM analytics;70. Количество уникальных треков
SELECT COUNT(DISTINCT track_id)
FROM playlist;Ещё примеры
71. Уникальные страны покупателей через JOIN
SELECT DISTINCT c.country
FROM customers c JOIN orders o ON c.id=o.customer_id;72. Уникальные товары с продажами >100
SELECT DISTINCT p.name
FROM products p JOIN order_items oi ON p.id=oi.product_id
WHERE oi.qty>100;73. Уникальные студенты, сдавшие экзамены
SELECT DISTINCT s.id
FROM students s JOIN exams e ON s.id=e.student_id;74. Уникальные курсы с активными студентами
SELECT DISTINCT c.id
FROM courses c JOIN enrollments e ON c.id=e.course_id
WHERE e.active=1;75. Уникальные клиенты с возвратами
SELECT DISTINCT o.customer_id
FROM orders o JOIN returns r ON o.id=r.order_id;76. Уникальные пользователи из CTE
WITH act AS (SELECT DISTINCT user_id
FROM sessions WHERE duration>300)
SELECT * FROM act;77. Уникальные ip из подзапроса
SELECT DISTINCT ip
FROM (SELECT ip FROM logins WHERE success=1) sq;78. Уникальные бренды с товарами на складе
SELECT DISTINCT p.brand
FROM products p JOIN stock s ON p.id=s.product_id;79. Уникальные города заказов
SELECT DISTINCT a.city
FROM addresses a JOIN orders o ON a.id=o.address_id;80. Уникальные кампании с кликами
SELECT DISTINCT ad.campaign_id
FROM ads ad JOIN clicks c ON ad.id=c.ad_id;81. Уникальные проекты с задачами
SELECT DISTINCT p.id
FROM projects p JOIN tasks t ON p.id=t.project_id;82. Уникальные сенсоры с аномалиями
SELECT DISTINCT s.id
FROM sensors s JOIN anomalies a ON s.id=a.sensor_id;83. Уникальные студенты по предметам
SELECT DISTINCT g.student_id
FROM grades g JOIN courses c ON g.course_id=c.id;84. Уникальные валюты в транзакциях
SELECT DISTINCT p.currency
FROM payments p JOIN transactions t ON p.id=t.payment_id;85. Уникальные роли пользователей
SELECT DISTINCT u.role
FROM users u JOIN permissions p ON u.id=p.user_id;86. Уникальные combination user-device
SELECT DISTINCT u.id, d.id
FROM users u JOIN devices d ON u.id=d.user_id;87. Уникальные авторы постов
SELECT DISTINCT a.id
FROM authors a JOIN posts p ON a.id=p.author_id;88. Уникальные combination customer-product
SELECT DISTINCT o.customer_id, oi.product_id
FROM orders o JOIN order_items oi ON o.id=oi.order_id;89. Уникальные combination region-currency
SELECT DISTINCT s.region, s.currency
FROM sales s JOIN payments p ON s.id=p.sale_id;90. Уникальные combination service-error
SELECT DISTINCT l.service, l.error_code
FROM logs l JOIN errors e ON l.error_code=e.code;Ещё примеры
91. Уникальные жанры фильмов
SELECT DISTINCT genre
FROM movies;92. Уникальные артисты в плейлисте
SELECT DISTINCT artist
FROM playlist;93. Уникальные виды спорта
SELECT DISTINCT sport
FROM matches;94. Уникальные хэштеги
SELECT DISTINCT hashtag
FROM social;95. Уникальные страны в заказах
SELECT DISTINCT country
FROM orders;96. Уникальные типы билетов
SELECT DISTINCT ticket_type
FROM tickets;97. Уникальные профессии сотрудников
SELECT DISTINCT profession
FROM employees;98. Уникальные модели авто
SELECT DISTINCT model
FROM cars;99. Уникальные бренды одежды
SELECT DISTINCT brand
FROM clothes;100. Уникальные publisher книг
SELECT DISTINCT publisher
FROM books;Заключение
DISTINCT позволяет выбирать только уникальные значения. Его можно применять к одному или нескольким столбцам, использовать в агрегатах, подзапросах, CTE, JOIN и аналитике. Примеры выше показывают применение в e‑commerce, HR, IoT, маркетинге и других сферах.
Подробнее см. в официальной документации MySQL.