English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Предложение SQL DISTINCT

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

检索不同的值

从数据库表中获取数据时,结果集可能包含重复的行或值。 如果要删除这些重复的值,可以在SELECT关键字之后直接指定关键字DISTINCT,如下所示:

语法

DISTINCT子句用于从结果集中删除重复的行:

SELECT DISTINCT column_list FROM table_name;

在这里,column_list是用逗号分隔的要获取其值的数据库表的列名或字段名的列表(例如nameagecountry等)。

Внимание: DISTINCT子句的行为类似于UNIQUE约束,除了它对待null的方式不同。 两个NULL值被认为是唯一的,而同时又不认为它们是彼此不同的。

让我们看一些示例,演示其实际工作方式。

假设我们在数据库中有一个customers表,其中包含以下记录:

+---------+--------------------+-----------+-------------+
| cust_id | cust_name          | city      | postal_code |
+---------+--------------------+-----------+-------------+
|       1 | Maria Anders       | Berlin    | 12209       |
|       2 | Fran Wilson        | Madrid    | 28023       |
|       3 | Dominique Perrier  | Paris     | 75016       |
|       4 | Martin Blank       | Turin     | 10100       |
|       5 | Thomas Hardy       | Portland  | 97219       |
|       6 | Christina Aguilera | Madrid    | 28001       |
+---------+--------------------+-----------+-------------+

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

SELECT city FROM customers;

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

+-----------+
| город     |
+-----------+
| Berlin    |
| Madrid    |
| Paris     |
| Turin     |
| Portland  |
| Madrid    |
+-----------+

Если внимательно посмотреть на результат, вы обнаружите, что город “Madrid” появляется дважды в наших результатах, это не очень хорошо. Хорошо, давайте решим эту проблему.

удалении повторяющихся данных

Следующие строки используются для DISTINCT вcustomersВ таблице создается список всех городов.

SELECT DISTINCT city FROM customers;

После выполнения вышеуказанных команд вы получите следующий вывод:

+-----------+
| город     |
+-----------+
| Berlin    |
| Madrid    |
| Paris     |
| Turin     |
| Portland  |
+-----------+

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

Внимание:Если использовать оператор SELECT DISTINCT в столбце с несколькими NULL-значениями, SQL сохраняет один NULL-значение и удаляет другие значения из результирующего набора, так как DISTINCT рассматривает все NULL-значения как одинаковые значения.