sql >> Database teknologi >  >> RDS >> Mysql

sql distinkt, får 2 kolonner

Du bør forene begge kolonner og derefter filtrere efter forskellige værdier:

select distinct T.from_to from
( select `from` as from_to
  from messages
  union
  select `to` as from_to
  from messages
) T

hvis du virkelig har brug for alt i en kommaseparat streng, skal du bruge GROUP_CONCAT([DISTINCT] aggregeringsfunktion.

REDIGERET :

Du skal markere som løsning Gerald svar. Efter test af fagforeningsoperatør og genlæs mysql fagforeningsoperatørdokumentation , som standard, mysql-filter for forskellige værdier:

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)

derefter den endelige forespørgsel er:

  select `from` as from_to
  from messages
  union distinct
  select `to` as from_to
  from messages

Bemærk, at distinct er ikke obligatorisk.

Kun hvis du har brug for en komma-sparate-streng, er den første løsning nødvendig:

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


  1. Humaniseret eller naturlig nummersortering af blandede ord-og-tal-strenge

  2. få alle varer i kategorien og dens underordnede

  3. SQL:Hvordan kan vi lave en tabel1 JOIN tabel2 PÅ en tabel givet i et felt i tabel1?

  4. Opdel data i 3 kolonner