Руководство по SQL. Обработка дубликатов.

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

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


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    | C++       |          3 |   2500 |
|  4 | Konstantin Geiko  | C#        |          2 |   2000 |
|  5 | Asya Suleimanova  | UI/UX     |          2 |   1800 |
|  6 | Ludmila Geiko     | UI/UX     |          2 |   1800 |
|  7 | Ivan Ivanov       | C#        |          1 |    900 |
+----+-------------------+-----------+------------+--------+

Допустим, что нам необходимо узнать записи разработчиков каких специальностей (Java, C++ и т.д.) хранятся у нас в таблице.

Мы можем попробовать выполнить следующий запрос:


mysql> SELECT SPECIALTY FROM developers;

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


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

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

Теперь попробуем выполнить следующий запрос:


mysql> SELECT DISTINCT SPECIALTY FROM developers;

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


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

Как видно, записи не повторяются, т.е. мы получили только уникальные результаты.

На этом мы заканчиваем изучение способа обработки дубликатов в языке SQL.
В следующей статье мы рассмотрим инъекции (injections).