2016-10-17 3 views
0
country  state city  
Country1 state1 city5 
Country2 state2 city6 
Country5 state1 city6 
Country5 state3 city6 
Country2 state3 city9 

국가, 주, 도시에서 고유 값을 가져 오려면이 모든 열을 비워 두지 않아야합니다. 나는 쿼리의 몇 가지를 시도했지만SQL 테이블에서 모든 열에 대해 다른 모든 항목을 선택하고 싶습니다.

Country1  
Country2  
Country5  
state1 
state2 
state3 
city5 
city6 
city9 
+0

은 왜 고유 원하는 경우 Country1' 출력에 배를 나열'의 경우, 또는이 당신의 출력에서 ​​실수) a_horse_with_no_name하는? – Igor

+0

예 ... 그것의 오타가 –

+0

어떤 DBMS를 사용하고 있습니까? –

답변

2

간단한 방법은 아래와 같이 사용하는 모든 고유 값을해야 용맹 한 출력을 작동하지 않습니다 UNION

Select country from yourtable 
Union 
Select state from yourtable 
Union 
Select city from yourtable 

당신의 DBMS 지원하는 경우가 안심 할 수 있습니다 APPLY 운영자

SELECT datas 
FROM Youtable s 
     CROSS apply (SELECT [country] UNION 
        SELECT [state] UNION 
        SELECT [city]) cs (datas) 

당신의 DBMS 다음 LATERAL을 지원하는 경우 (감사

select t.x 
from the_table 
    cross join lateral (select country union select state union select city) as t(x) 
order by t.x 
+2

@Igor -'UNION' 자체가 중복을 제거합니다 –

+0

'APPLY'에 대한 SQL 표준에 해당하는 것은'LATERAL'입니다. –

+0

@a_horse_with_no_name - 오 감사합니다.이 기능을 매우 유용하게 사용합니다. –

관련 문제