논리적으로는 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를 선택 행 초래한다 :
MAKE
Toyota
Honda
하는 DISTINCT SELECT 모델은 4 개 행을 초래할해야합니다
MAKE | MODEL
Toyota | Camry
Toyota | Corolla
Honda | Civic
Honda | Accord
을 별개의 제조사, 모델을 선택 년 5 행 초래한다 :
MAKE | MODEL | YEAR
Toyota | Camry | 2017
Toyota | Camry | 2015
Toyota | Corolla | 2016
Honda | Civic | 2012
Honda | Accord | 2012
당신이 선택하고 더 많은 DISTINCT 열, 그것은 여분의 열이 고유 한 값을 가지고있어 가능성이 증가 (그러나 최소한 같은 유지)의 행의 양을위한 더 많은 기회 것 같아 결과.
더 많은 열에서 SELECT DISTINCT를 사용하면 더 적은 결과가 발생하는 경우가 있습니까? 그게 내 사건으로 일어난 일이지만, 그럴만한 이유가 있는지 확실하지 않습니다.
편집 : 나는 일반적인되기 위해 테이블 / 열 이름을 변경하고 단순에 대한 몇 가지 추가 조항을 삭제 한 것을 제외하고 여기에
, 내 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"와 같은 항목을 제거하면 실제로 더 많은 결과가 반환됩니다.
'별개의'선택 목록에 열을 추가하면주의 한 것처럼 ** 적은 ** 행을 가져서는 안됩니다. 여기에 뭔가가 있습니다. 실제 쿼리/데이터를 공유 할 수 있습니까? – Mureinik
select distinct가 혼란 스럽다면'group by '을 사용하도록 쿼리를 다시 작성하십시오. 그것은 기본적으로 똑같지 만 때로는 그것이 그것이하는 것처럼 행동하는 이유에 관해서는 덜 혼란 스럽습니다. –
실제로 문제를 복제하지 않는 사례가 아닌 실제 사례를 보여 주면 어떨까요? – cHao