При работе с SQL часто встречаются ситуации, когда вам необходимо получить уникальные значения из таблицы базы данных. В этой статье блога мы рассмотрим различные методы выполнения этой задачи. Мы предоставим примеры кода для каждого подхода, что позволит вам понять и реализовать метод, который лучше всего соответствует вашим потребностям.
Метод 1: использование ключевого слова DISTINCT
Ключевое слово DISTINCT — это простой способ получить уникальные значения из определенного столбца:
SELECT DISTINCT column_name
FROM table_name;
Пример:
SELECT DISTINCT city
FROM customers;
Метод 2: использование предложения GROUP BY
Предложение GROUP BY позволяет нам группировать строки на основе определенного столбца и применять агрегатные функции. Сгруппировав по нужному столбцу, мы можем получить уникальные значения:
SELECT column_name
FROM table_name
GROUP BY column_name;
Пример:
SELECT city
FROM customers
GROUP BY city;
Метод 3: использование подзапросов
Подзапросы предоставляют мощный подход к выбору уникальных значений на основе условий или сравнений. Мы можем использовать подзапрос в предложении WHERE для фильтрации повторяющихся значений:
SELECT column_name
FROM table_name
WHERE column_name IN (
SELECT column_name
FROM table_name
GROUP BY column_name
);
Пример:
SELECT city
FROM customers
WHERE city IN (
SELECT city
FROM customers
GROUP BY city
);
Метод 4: оконные функции (PostgreSQL, SQL Server, Oracle)
Оконные функции позволяют нам выполнять вычисления над набором строк. Объединив оконную функцию с предложением PARTITION BY, мы можем получить уникальные значения:
SELECT column_name
FROM (
SELECT column_name, ROW_NUMBER() OVER(PARTITION BY column_name ORDER BY column_name) AS row_num
FROM table_name
) AS subquery
WHERE row_num = 1;
Пример (PostgreSQL):
SELECT city
FROM (
SELECT city, ROW_NUMBER() OVER(PARTITION BY city ORDER BY city) AS row_num
FROM customers
) AS subquery
WHERE row_num = 1;
В этой статье блога мы рассмотрели четыре различных метода выбора уникальных значений в SQL. Независимо от того, предпочитаете ли вы использовать ключевое слово DISTINCT, предложение GROUP BY, подзапросы или оконные функции, каждый подход предлагает свои преимущества. Понимая эти методы, вы сможете эффективно извлекать уникальные значения из таблиц базы данных и оптимизировать запросы SQL.