論理的には、SELECT DISTINCT <multiple columns>
は、SELECT DISTINCT <less columns>
よりも同等以上の出力をもたらすはずです。SQL - より多くの列でSELECT DISTINCTを実行すると、結果は少なくなりますか?
私は私が実際に使用しているデータを使用することはできませんが、例のデータセットがある場合:
MAKE | MODEL | YEAR
Toyota | Camry | 2017
Toyota | Camry | 2015
Toyota | Corolla | 2016
Toyota | Corolla | 2016
Honda | Civic | 2012
Honda | Accord | 2012
を次にDISTINCT MAKEを選択2行になる必要があります。
MAKE
Toyota
Honda
するDISTINCT SELECTモデルを作成すると、4行になります。
MAKE | MODEL
Toyota | Camry
Toyota | Corolla
Honda | Civic
Honda | Accord
SELECT DISTINCT MAKE、MODEL、YEARの結果は5行になります:あなたが選択している
MAKE | MODEL | YEAR
Toyota | Camry | 2017
Toyota | Camry | 2015
Toyota | Corolla | 2016
Honda | Civic | 2012
Honda | Accord | 2012
よりDISTINCT列余分な列のためのより多くの機会が異なる値を持っているように、それはそうですので、おそらく増加(ただし最低でも、同じキープ)の行の量を結果。
さらに多くの列でSELECT DISTINCTを実行すると結果が低下することはありますか?それが私のケースで起こっていることですが、正当な理由があるのかどうかはわかりません。
EDIT:私はジェネリックになるために、テーブル/カラム名を変更し、簡単にするためにいくつかの余分な条項を削除した以外ここ
は、私のSQLの「コピー」です。
WITH view1
AS
(SELECT DISTINCT t1.column1, t1.column2, t1.column3, t2.column4, t2.column5
FROM TABLE_ONE t1
INNER JOIN TABLE_TWO t2
ON t1.column1 = t2.column1
WHERE t1.column2 = "Name"
AND t2.column3 = 2000
),
view2
AS
(SELECT DISTINCT v1.column1, v1.column2, v1.column3, v1.column4, v1.column5, t3.column6
FROM view1 v1
INNER JOIN TABLE_THREE t3
ON v1.column2 = t3.column2
WHERE t3.column6 = "something"
),
SELECT DISTINCT v2.column1, v2.column2, v2.column3, v2.column4, v2.column5, v2.column6, t4.column7
FROM view2 v2
INNER JOIN TABLE_FOUR t4
ON v2.column4 = t4.column4;
上記のすべてから「column5」などのものを削除すると、実際にはより多くの結果が返されます。
「別個の」選択リストに列を追加することは、あなたが指摘したように、** less **行にならないはずです。ここには何か他のことがあります。実際のクエリ/データを共有できますか? – Mureinik
select distinctが混乱している場合は、 'group by'を使用するようにクエリを書き直してください。基本的には同じですが、なぜそれが動作するのかについては分かりにくい場合があります。 –
問題を実際に複製していない例ではなく、実際のケースを表示するのはどうでしょうか? – cHao