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

国、州、市から異なる値を取得したい場合は、これらの列をすべて空白にしないでください。私は、クエリのカップルを試みたが、簡単な方法は、あなたのDBMSサポートしている場合はこれが安心して行うことができますUNIONSQLテーブルからすべての列に異なるすべてを選択したい

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

を使用している

Country1  
Country2  
Country5  
state1 
state2 
state3 
city5 
city6 
city9 
+0

Distinctが必要な場合や出力に間違いがある場合は、なぜ出力に「Country1」が2倍表示されるのですか? – Igor

+0

はい...そのタイプミス –

+0

どのDBMSを使用していますか? –

答えて

2

以下のように..The出力はすべて異なる値でなければなりません動作しません。 APPLYオペレータ

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

あなたDBMSは、LATERAL(感謝をサポートしている場合a_horse_with_no_nameに)

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'は' LATERAL' –

+0

@a_horse_with_no_nameある 'のための標準SQLには同等 - おお、あなたがそれを見ていきます感謝..私は、この機能に非常に便利な –

関連する問題