DISTINCT 省略选择字段中包含重复数据的记录。为了让查询结果包含它们,必须使 SELECT 语句中列举的每个字段值是唯一的。例如,雇员表可能有一些同姓的雇员。如果有两个记录的姓氏字段皆包含 Smith,则下列 SQL 语句只返回包含 Smith 的记录:SELECT DISTINCT
LastName
FROM Employees;如果省略 DISTINCT,则查询将返回两个包含 Smith 的记录。如果 SELECT 子句包含多个字段,则对已给记录,所有字段值的组合必须是唯一的,而且结果中将包含这一组合。如果查询使用 DISTINCT,则不能更新其输出,而且该输出也不会反映其它用户所作的一系列更改。
DISTINCTROW 省略基于整个重复记录的数据,而不只是基于重复字段的数据。例如,可在客户ID字段上创建一个联结客户表及订单表的查询。客户表不包含重复的客户ID字段,但订单表却包含重复的客户ID字段,因为每一客户可以有许多订单,所以包含有重复的字段。下列 SQL 语句显示如何使用 DISTINCTROW 生成公司的列表,且该列表至少包含一个订单,但不包含有关那些订单的任何详细数据:SELECT DISTINCTROW CompanyName
FROM Customers INNER JOIN Orders
ON Customers.CustomerID = Orders.CustomerID
ORDER BY CompanyName;如果省略 DISTINCTROW,则查询将对每一公司生成多重行,且该公司包含多个订单。仅当从查询中的一部分表但不是全部表中选择字段时,DISTINCTROW 才会有效。如果查询只包含一个表,或者从所有的表中输出字段,则可省略DISTINCTROW。