Как вывести уникальные значения sql
Перейти к содержимому

Как вывести уникальные значения sql

  • автор:

Запросы

С помощью оператора DISTINCT можно выбрать уникальные данные по определенным столбцам.

К примеру, разные товары могут иметь одних и тех же производителей, и, допустим, у нас следующая таблица товаров:

USE productsdb; DROP TABLE IF EXISTS Products; CREATE TABLE Products ( Id INT AUTO_INCREMENT PRIMARY KEY, ProductName VARCHAR(30) NOT NULL, Manufacturer VARCHAR(20) NOT NULL, ProductCount INT DEFAULT 0, Price DECIMAL NOT NULL ); INSERT INTO Products (ProductName, Manufacturer, ProductCount, Price) VALUES ('iPhone X', 'Apple', 3, 71000), ('iPhone 8', 'Apple', 3, 56000), ('Galaxy S9', 'Samsung', 6, 56000), ('Galaxy S8', 'Samsung', 2, 46000), ('Honor 10', 'Huawei', 3, 26000);

Выберем всех производителей:

SELECT Manufacturer FROM Products;

Выборка уникальных значений в MySQL

Однако при таком запросе производители повторяются. Теперь применим оператор DISTINCT для выборки уникальных значений:

SELECT DISTINCT Manufacturer FROM Products;

Оператор DISTINCT в MySQL

Также мы можем задавать выборку уникальных значений по нескольким столбцам:

SELECT DISTINCT Manufacturer, ProductCount FROM Products;

В данном случае для выборки используются столбцы Manufacturer и ProductCount. Из пяти строк только для двух строк эти столбцы имеют повторяющиеся значения. Поэтому в выборке будет 4 строки:

Команда DISTINCT

Команда DISTINCT позволяет выбирать только уникальные значения из базы данных (то есть отсеивает дубли: к примеру, в таблице есть две Маши — тогда запрос выведет только первую).

Синтаксис

SELECT DISTINCT поле FROM имя_таблицы WHERE условие
SELECT COUNT(DISTINCT поле) FROM имя_таблицы WHERE условие
SELECT SUM(DISTINCT поле) FROM имя_таблицы WHERE условие

Таблицы для примеров

таблица employees

id
айди
name
имя
age
возраст
salary
зарплата
1 user1 23 400
2 user2 25 500
3 user3 23 500
4 user4 30 900
5 user5 27 500
6 user6 28 900

Пример

Давайте выберем все уникальные значения зарплат из таблицы:

SELECT DISTINCT salary FROM employees

Результат выполнения кода:

salary
зарплата
400
500
900

Пример

Давайте подсчитаем все уникальные значения зарплат из таблицы (их будет 3 штуки: 400 , 500 и 1000):

SELECT COUNT(DISTINCT salary) as count FROM employees

Результат выполнения кода:

count
количество
3

Пример

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

SELECT COUNT(DISTINCT salary) as salary_count, COUNT(DISTINCT age) as age_count FROM employees

Результат выполнения кода:

salary_count
зарплата
age_count
возраст
3 5

Пример

Давайте просуммируем все уникальные значения зарплат из таблицы employees :

SELECT SUM(DISTINCT salary) as sum FROM employees

Результат выполнения кода:

sum
суммарная зарплата
1900

Как в sql выбрать уникальные значения

С помощью DISTINCT можно получить только уникальные значения из столбца таблицы.

SELECT DISTINCT first_name FROM users; first_name ------------ Roman Sean Alex Michal Britney 

Кроме того, DISTINCT можно использовать и с несколькими полями сразу:

SELECT DISTINCT first_name, last_name FROM users; first_name | last_name ------------+--------------- Bruce | Williss Sean | Connery Robin | Williams 

Как посчитать уникальные значения в sql

Используем DISTINCT и COUNT() . Первый удалит дубликаты, а вторая посчитает количество строк.

SELECT COUNT(DISTINCT car_id) FROM orders; -- покажет количество уникальных car_id в таблице orders 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *