此查询中不同的目的是什么?

时间:2012-11-02 01:29:43

标签: sql sql-server

今天,我在这里看到了关于W3Schools的查询:http://www.w3schools.com/sql/sql_view.asp,其内容如下:

CREATE VIEW [Category Sales For 1997] AS
SELECT DISTINCT CategoryName,Sum(ProductSales) AS CategorySales
FROM [Product Sales for 1997]
GROUP BY CategoryName

我想知道在此查询中使用DISTINCT的目的是什么?该查询已经GROUPed BY结果集,因此在执行CategoryName之后和执行GROUP BY之前,不存在相同SELECT的机会。如果不使用DISTINCT,此查询的行为会不同吗?我的意思是如果它只是这样写的会发生什么:

CREATE VIEW [Category Sales For 1997] AS
SELECT CategoryName,Sum(ProductSales) AS CategorySales
FROM [Product Sales for 1997]
GROUP BY CategoryName

谢谢!

2 个答案:

答案 0 :(得分:3)

您可以将其删除。它是多余的,对输出没有影响。

答案 1 :(得分:2)

正如您所说,GROUP BY已经为逐个列返回不同的值。由于您的示例中的一列包含在选择列列表中,因此DISTINCT不提供任何其他功能。

根据查询(可能不是在这种情况下),不必要的DISTINCT会严重影响性能,因此在任何查询中检查DISTINCT是否真的是必不可少的。