检索时去重
从数据库表获取数据时,结果集可能包含重复的行或值。如果要删除这些重复的值,可以在SELECT关键字后面指定DISTINCT
关键字。
语法
DISTINCT
子句用于从结果集中删除重复的行:
SELECT DISTINCT column_list FROM table_name;
在这里,column_list
是要查询的字段,多个字段由逗号分隔。
让我们来看一些例子。
假设我们的数据库中有一个customer表,其中包含以下记录:
+---------+--------------------+-----------+-------------+
| 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;
执行之后,您将得到如下输出:
+-----------+
| city |
+-----------+
| Berlin |
| Madrid |
| Paris |
| Turin |
| Portland |
| Madrid |
+-----------+
如果您仔细查看输出,您会发现“Madrid”这个城市在我们的结果中出现了两次。
去除重复数据
下面的语句查询时使用了DISTINCT
。
示例
SELECT DISTINCT city FROM customers;
执行上述命令后,将得到如下输出:
+-----------+
| city |
+-----------+
| Berlin |
| Madrid |
| Paris |
| Turin |
| Portland |
+-----------+
正如您这次看到的,我们的结果集中没有重复的值。
注意:如果对具有多个空值的列使用SELECT DISTINCT语句,那么SQL将保留一个空值,并从结果集中删除其他空值,因为DISTINCT将所有空值视为相同的值。