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-column に対して個別の値を返しています。その 1 つの列が例の選択列リストに含まれているため、DISTINCT は追加機能を提供しません。

ただし、クエリによっては (おそらくこの場合はそうではありません)、不要な DISTINCT によってパフォーマンスが大幅に低下する可能性があるため、クエリで DISTINCT が本当に必要かどうかを常に確認することをお勧めします。

于 2012-11-02T01:39:55.893 に答える