2016-07-23 6 views
-1

각 열의 고유 한 값만 선택하려고합니다. 명확한 조합이 아닙니다. 여기에 내 쿼리가 있지만 모든 열의 고유 한 조합이 반환됩니다. 나는 각 열이 다른 열에 의존하지 않고 고유 한 값을 보여주기를 원한다.모든 열에서 고유 한 값 선택

$sql= "select distinct 
      CASE WHEN col1 not regexp '[0-9]' THEN col1 else null end as col1 
      ,CASE WHEN col2 not regexp '[0-9]' THEN col2 else null end as col2 
      ,CASE WHEN col3 not regexp '[0-9]' THEN col3 else null end as col3 from table_name"; 

그것은이 반환

col1| col2| col3 
a  1  3 
b  2  4 
c  2  4 
d  1  3 

너희들이 COL2와 COL3의 값이 너무 COL2와 COL3에서 별개의 원하는 별개 아니라는 것을 볼 수 있었다. 감사! 당신이 원하는 무엇인지에

+0

'할 수 있지만 작동하지 않습니까?' 샘플 데이터와 원하는 출력물을 보여줄 수 있습니까? –

+0

@TimBiegeleisen 지금 받으시 길 바랍니다. – tooba

+0

'distinct col1, col2, col3'의 경우에는 개별 열이 아닌 모든 열에서 고유하게 작동합니다.'case' stmt는 영향을주지 않습니다. – Drew

답변

0

내 추측은 union all을 사용하는 것입니다

select distinct (case when col1 not regexp '[0-9]' then col1 end) as col1, 'col1' as which 
from table_name 
union all 
select distinct (case when col2 not regexp '[0-9]' then col2 end) as col2, 'col2' as which 
from table_name 
union all 
select distinct (case when col3 not regexp '[0-9]' then col3 end) as col3, 'col3' as which 
from table_name; 

이 하나가 열 이름이고, 다른 하나는 열에 고유 한 값으로,이 열이있는 결과를 생성합니다.

+0

작동하지 않습니다. 간단한 것은 모든 열에서 별도의 값을 개별적으로 원한다는 것입니다. 당신이 그것을 얻을 수 있기를 바랍니다. – tooba

+0

Gordon에게 몇 가지 샘플 데이터와 예상 결과를 보여 주면 그는 잠을 잘 수 있습니다. – Drew

+0

덕분에 도움이됩니다. – tooba