2

今天,我在这里遇到了一个关于 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没有相同的机会。如果不使用,此查询的行为会有所不同吗?我的意思是如果简单地写成这样会发生什么:CategoryNameGROUP BYSELECTDISTINCT

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

谢谢!

4

2 回答 2

3

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

于 2012-11-02T01:35:27.820 回答
2

正如您正确指出的那样, GROUP BY 已经为 group-by-columns 返回不同的值。由于该列包含在您的示例中的选择列列表中,因此 DISTINCT 不提供任何附加功能。

但是,根据查询(在这种情况下可能不是),不必要的 DISTINCT 可能会严重损害性能,因此检查 DISTINCT 在任何查询中是否真的必要总是一个好主意。

于 2012-11-02T01:39:55.893 回答