Что делает distinct в SQL: руководство для начинающих
Distinct is a keyword in SQL that is used to retrieve unique values from a column or a combination of columns in a table. It eliminates duplicate rows from the result set, leaving only one occurrence of each unique value.
Here's an example to illustrate how the DISTINCT
keyword works:
SELECT DISTINCT column_name
FROM table_name;
In the above SQL query, we use DISTINCT
to select only unique values from the specified column_name.
For instance, let's say we have a table called "employees" with a column "department" that contains duplicate values:
| employee_id | department |
|-------------|------------|
| 1 | Sales |
| 2 | Marketing |
| 3 | Sales |
| 4 | HR |
| 5 | Marketing |
If we execute the following query:
SELECT DISTINCT department
FROM employees;
The result will be:
| department |
|------------|
| Sales |
| Marketing |
| HR |
As you can see, the duplicate occurrences of "Sales" and "Marketing" have been eliminated, and only the unique values are returned.
Детальный ответ
Что делает DISTINCT в SQL?
Запросы SQL позволяют нам выбирать данные из таблиц и применять различные операции к этим данным. Одной из таких операций является оператор DISTINCT. Он используется для выбора уникальных значений из столбцов таблицы и исключает повторения.
Оператор DISTINCT может быть полезен, когда необходимо получить список уникальных значений из столбца или комбинации столбцов, а не все значения. Давайте рассмотрим его использование на примерах.
Пример использования DISTINCT
Допустим, у нас есть таблица "users" с столбцом "city", который содержит информацию о городах, в которых живут пользователи:
CREATE TABLE users (
id INT,
name VARCHAR(50),
city VARCHAR(50)
);
INSERT INTO users (id, name, city)
VALUES
(1, 'John', 'New York'),
(2, 'Alice', 'London'),
(3, 'Bob', 'Paris'),
(4, 'Eva', 'New York'),
(5, 'Mike', 'London');
Чтобы получить список всех уникальных городов из таблицы "users", мы можем использовать оператор DISTINCT следующим образом:
SELECT DISTINCT city
FROM users;
Этот запрос вернет следующий результат:
city
------
New York
London
Paris
Как видно, оператор DISTINCT выбрал только уникальные значения из столбца "city" и исключил повторения.
Применение DISTINCT к нескольким столбцам
Кроме выбора уникальных значений из одного столбца, оператор DISTINCT также может быть применен к комбинации столбцов.
Например, давайте рассмотрим следующую таблицу "orders", содержащую информацию о заказах пользователей:
CREATE TABLE orders (
id INT,
user_id INT,
product VARCHAR(50),
quantity INT
);
INSERT INTO orders (id, user_id, product, quantity)
VALUES
(1, 1, 'Phone', 1),
(2, 2, 'Laptop', 2),
(3, 1, 'Headphones', 1),
(4, 3, 'Phone', 1),
(5, 2, 'Headphones', 1);
Чтобы получить список уникальных комбинаций пользователей и товаров из таблицы "orders", мы можем использовать оператор DISTINCT следующим образом:
SELECT DISTINCT user_id, product
FROM orders;
Результат будет следующим:
user_id | product
---------+---------
1 | Phone
2 | Laptop
1 | Headphones
3 | Phone
2 | Headphones
Здесь оператор DISTINCT выбрал только уникальные комбинации из столбцов "user_id" и "product". Если бы мы не использовали оператор DISTINCT, то в результатах были бы повторы, например, пользователь с идентификатором 1 и товаром "Phone" встречается дважды.
Усложненные примеры использования DISTINCT
Оператор DISTINCT может быть использован и в более сложных запросах, включая JOIN и WHERE условия.
Рассмотрим таблицы "users" и "orders" и предположим, что нам нужно получить список уникальных городов, в которых живут пользователи, у которых был сделан заказ на товар "Phone". Мы можем использовать следующий запрос:
SELECT DISTINCT u.city
FROM users u
JOIN orders o ON u.id = o.user_id
WHERE o.product = 'Phone';
Этот запрос вернет список уникальных городов, где пользователи оставляли заказы на "Phone". Здесь мы использовали оператор DISTINCT в сочетании с JOIN и WHERE условием.
Также, оператор DISTINCT может быть использован в комбинации с другими операторами, например, ORDER BY. Это позволяет нам выбирать уникальные значения и упорядочивать их по определенному столбцу.
Заключение
Оператор DISTINCT в SQL позволяет выбирать уникальные значения из столбцов таблицы и исключать повторения. Он полезен, когда необходимо получить список уникальных значений из одного или нескольких столбцов. Оператор DISTINCT может быть использован в простых и сложных запросах, включая JOIN и WHERE условия. Он помогает нам анализировать данные и выявлять уникальные значения в больших объемах информации.