両方の列を結合してから、個別の値をフィルタリングする必要があります:
select distinct T.from_to from
( select `from` as from_to
from messages
union
select `to` as from_to
from messages
) T
本当にすべてをコンマ区切りの文字列で囲む必要がある場合は、 GROUP_CONCAT([DISTINCT] 集計関数。
編集済み :
あなたは解決策としてジェラルドの答えをマークする必要があります。ユニオンオペレーターをテストし、mysqlユニオンオペレーターのドキュメント を読み直した後 、デフォルトでは、個別の値に対するmysqlフィルター:
mysql> create table ta( a int );
Query OK, 0 rows affected (0.05 sec)
mysql> insert into ta values (1),(1),(2);
Query OK, 3 rows affected (0.00 sec)
Records: 3 Duplicates: 0 Warnings: 0
mysql> select * from ta
-> union
-> select * from ta;
+------+
| a |
+------+
| 1 |
| 2 |
+------+
2 rows in set (0.00 sec)
次に、最終クエリ は:
select `from` as from_to
from messages
union distinct
select `to` as from_to
from messages
distinct
に注意してください 必須ではありません。
カンマ区切り文字列が必要な場合にのみ、最初の解決策が必要です:
select distinct GROUP_CONCAT( distinct T.from_to from )
( select `from` as from_to
from messages
union
select `to` as from_to
from messages
) T