DISTINCT в MySQL — 100 практических приёмов работы с уникальными данными

100 практических кейсов MySQL DISTINCT: уникальные значения, COUNT(DISTINCT), подзапросы, JOIN, CTE.

🟢 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.


 

Понравилась статья? Поделиться с друзьями: