有时 DISTINCT 条件是不必要的。例如,结果中的一个或多个列的属性可能(显式或隐式地)包含了 UNIQUE 条件,因为它是主键。
由于 Products 表包含主键 p.ID(它是结果集的一部分),因此以下命令中的 DISTINCT 关键字是不必要的。
SELECT DISTINCT p.ID, p.Quantity FROM Products p; |
Products<seq>
数据库服务器将执行语义上等效的查询:
SELECT p.ID, p.Quantity FROM Products p; |
同样,以下查询的结果包含两个表的主键,因此结果中的每一行肯定是不重复的。因此,数据库服务器执行此查询时不会在结果集上执行 DISTINCT。
SELECT DISTINCT * FROM SalesOrders o JOIN Customers c ON o.CustomerID = c.ID WHERE c.State = 'NY'; |
Work[ HF[ c<seq> ] *JH o<seq> ]
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |