web-dev-qa-db-ja.com

順列とのDISTINCT列の組み合わせ

私のpostgresql列構造は次のようになります。

id  | from | to
---------------
1   |  A   |  B
2   |  A   |  B 
3   |  C   |  D

今、私は次のような結果が必要です:

 res 
-----
'A:B'
'B:A' 
'C:D'
'D:C'

最初の行と行はA:BからB:Aに、「C:D」から「D:C」に並べ替えられ、2番目の列は明確な操作のために省略されています。

5
nali

これはスタックオーバーフローの質問に似ていますが、Unionは明確な組み合わせを提供します。

SELECT concat("from",':',"to") as res From Table
UNION
SELECT concat("to",':',"from") From Table
6

Least()およびGreatest()をdistinctと一緒に使用することもできます。それはそれらを連結する必要なしに個々の値を保存します。

select distinct least("from", "to"), greatest("from", "to")
from the_table;