Bạn nên kết hợp cả hai cột và sau đó lọc các giá trị riêng biệt:
select distinct T.from_to from
( select `from` as from_to
from messages
union
select `to` as from_to
from messages
) T
nếu bạn thực sự cần tất cả trong một chuỗi riêng biệt bằng dấu phẩy, hãy sử dụng GROUP_CONCAT ([DISTINCT] chức năng tổng hợp.
ĐÃ CHỈNH SỬA :
Bạn nên đánh dấu là câu trả lời Gerald giải pháp. Sau khi kiểm tra toán tử liên minh và đọc lại tài liệu về toán tử liên minh mysql , theo mặc định, bộ lọc mysql cho các giá trị riêng biệt:
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)
sau đó, truy vấn cuối cùng là:
select `from` as from_to
from messages
union distinct
select `to` as from_to
from messages
Lưu ý rằng distinct
không bắt buộc.
Chỉ khi bạn cần một chuỗi dấu phẩy, giải pháp đầu tiên là cần thiết:
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