Руководство по SQL. Получение уникальных данных.

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

В работе мы можем столкнуться с ситуацией, когда у нас есть повторяющиеся записи в таблице и вместо того, чтобы получать их все, нам целесообразно получить только уникальные элементы.

Запрос с использованием ключевого слова DISTINCT имеет следующий вид:


SELECT DISTINCT колонка1, колонка2 ... колонкаN 
FROM имя_таблицы
WHERE [условие];

Пример:

Предположим, что у нас есть таблица developers, которая имеет следующий вид:


+----+-------------------+------------+------------+--------+
| ID | NAME              | SPECIALTY  | EXPERIENCE | SALARY |
+----+-------------------+------------+------------+--------+
|  1 | Eugene Suleimanov | Java       |          2 |   2500 |
|  2 | Peter Romanenko   | Java       |          3 |   3500 |
|  3 | Andrei Komarov    | JavaScript |          3 |   2500 |
|  4 | Konstantin Geiko  | C#         |          2 |   2000 |
|  5 | Asya Suleimanova  | UI/UX      |          2 |   1800 |
|  6 | Kolya Nikolaev    | Javascript |          5 |   3400 |
|  7 | Ivan Ivanov       | C#         |          1 |    900 |
|  8 | Ludmila Geiko     | UI/UX      |          2 |   1800 |
+----+-------------------+------------+------------+--------+

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


mysql> SELECT SPECIALTY FROM developers 
       ORDER BY SPECIALTY;

После выполнения данного запроса мы получим следующий результат:


+------------+
| SPECIALTY  |
+------------+
| C#         |
| C#         |
| Java       |
| Java       |
| JavaScript |
| Javascript |
| UI/UX      |
| UI/UX      |
+------------+

Как мы видим, все специальности повторяются дважды. Если же в нашей таблице будет миллион записей, понять, какие же специальности у нас есть станет крайне затруднительным.
Теперь попробуем использовать ключевое слово DISTINCT.


mysql> SELECT DISTINCT SPECIALTY FROM developers 
ORDER BY SPECIALTY;

В результате обработки данного запроса мы получим следующий результат:


+------------+
| SPECIALTY  |
+------------+
| C#         |
| Java       |
| JavaScript |
| UI/UX      |
+------------+

На этом мы заканчиваем изучение ключевого слова DISTINCT языка SQL.
В следующей статье мы рассмотрим механизм получения данных сразу из нескольких таблиц с помощью ключевого слова JOIN.