sql >> Database >  >> RDS >> Mysql

sql onderscheiden, krijgt 2 kolommen

U moet beide kolommen samenvoegen en vervolgens filteren op verschillende waarden:

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

als je echt alles in een komma aparte string nodig hebt, gebruik dan GROUP_CONCAT([DISTINCT] aggregatiefunctie.

BEWERKT :

Markeer als oplossing Gerald antwoord. Na het testen van de union-operator en de mysql union-operatordocumentatie opnieuw lezen , standaard, mysql-filter voor verschillende waarden:

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)

dan de laatste vraag is:

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

Merk op dat distinct is niet verplicht.

Alleen als je een komma-sparate string nodig hebt, is de eerste oplossing nodig:

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. MySQL-tabel op verschillende pagina's aanpassen met scores uit een HTML-formulier

  2. Schrijven in ExcelSheet met UTL_FILE-pakket in Oracle

  3. Kan geen verbinding maken met een van de opgegeven MySQL-hosts

  4. Waarom gebruikt MySQL de verkeerde index?