今天,我在这里看到了关于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
谢谢!
答案 0 :(得分:3)
您可以将其删除。它是多余的,对输出没有影响。
答案 1 :(得分:2)
正如您所说,GROUP BY已经为逐个列返回不同的值。由于您的示例中的一列包含在选择列列表中,因此DISTINCT不提供任何其他功能。
根据查询(可能不是在这种情况下),不必要的DISTINCT会严重影响性能,因此在任何查询中检查DISTINCT是否真的是必不可少的。