Клаузата SQL DISTINCT се използва за премахване на дублирани стойности от резултатите от заявката. Той гарантира, че изходът показва само уникални записи за определените колони.
Пример: Първо ще го направим създавам демонстрационна SQL база данни и таблица, върху която ще използваме командата Distinct Clause.
Запитване:
SELECT DISTINCT Department
FROM Employees;
Изход:
Синтаксис:
SELECT DISTINCT column1 column2
FROM table_name
- колона1 колона2: Имена на полетата на таблицата.
- Table_name: Таблица, от която искаме да извлечем записите.
Забележка: Ако се използва в няколко колони
DISTINCTвръща уникални комбинации от стойности в тези колони.
Примери за DISTINCT в SQL
Нека създадем примерна таблица и да я попълним с някои дублиращи се записи. Ще видим някои примери за използване на ключовата дума DISTINCT с примерна таблица студенти.
Пример 1: Извличане на уникални имена от полето NAME.
Заявката връща само уникални имена, елиминирайки дублиращите се записи от таблицата.
Запитване:
SELECT DISTINCT NAME FROM students; Изход:
Пример 2: Извличане на уникални комбинации от множество колони
Тази заявка извлича различни комбинации от ИМЕ и ВЪЗРАСТ — ако два реда имат едно и също име и възраст, само единият от тях ще се появи в резултатния набор.
Запитване:
SELECT DISTINCT NAME AGE FROM students;Изход:
Пример 3: Използване на DISTINCT с клаузата ORDER BY
Можем да комбинираме ключовата дума DISTINCT с ПОРЪЧАЙТЕ ПО клауза за филтриране на уникални стойности, докато сортирате набора от резултати. Тази заявка извлича уникалните възрасти от таблицата на учениците и ги сортира във възходящ ред.
Запитване:
SELECT DISTINCT AGE FROM students ORDER BY AGE; Изход:
Пример 4: Използване на DISTINCT с агрегатни функции (напр. COUNT())
Тук ще проверим БРОЙ() функция с клауза DISTINCT, която ще даде общия брой студенти с помощта на функцията COUNT().
Запитване:
SELECT COUNT(DISTINCT ROLL_NO) FROM Students ;Изход:
Пример 5: DISTINCT с NULL стойности
В SQL ключовата дума DISTINCT третира NULL като уникална стойност. NULL се третира като отделна стойност, така че ще се появи само веднъж, ако има няколко NULL.
Запитване:
INSERT INTO students (ROLL_NO NAME ADDRESS PHONE AGE)
VALUES (13 'John Doe' '123 Unknown Street' '9876543216' NULL);
SELECT DISTINCT AGE FROM students;
Изход:
Създаване на тест