2017-12-19 11 views
1

論理的には、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」などのものを削除すると、実際にはより多くの結果が返されます。

+1

「別個の」選択リストに列を追加することは、あなたが指摘したように、** less **行にならないはずです。ここには何か他のことがあります。実際のクエリ/データを共有できますか? – Mureinik

+0

select distinctが混乱している場合は、 'group by'を使用するようにクエリを書き直してください。基本的には同じですが、なぜそれが動作するのかについては分かりにくい場合があります。 –

+0

問題を実際に複製していない例ではなく、実際のケースを表示するのはどうでしょうか? – cHao

答えて

3

NEVER。データセットの異なる列の明確な組み合わせは、SAMEデータセットの個々のフィールドの一意の値よりも小さくなることはありません。それは数学的にもSQLでも不可能です。これはあなたが参加しているものや他の要因に関係なく真実になるはずです。

+0

これは私が考えたものです。私は思っていなかった部分に誰かが穴を開けることができるかどうかを考えて投稿したかっただけですが、そうでないようで、私の問題は他のどこかにあるはずです。 – Louis

+0

あなたはあなたが得ている結果の "車"バージョンを投稿できますか? –

関連する問題