sql >> Databáze >  >> RDS >> Mysql

sql odlišné, získává 2 sloupce

Měli byste sjednotit oba sloupce a poté filtrovat různé hodnoty:

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

pokud opravdu potřebujete vše v řetězci odděleném čárkou, použijte GROUP_CONCAT([DISTINCT] agregační funkce.

UPRAVENO :

Jako řešení byste měli označit odpověď Geralda. Po otestování operátora unie a znovu si přečtěte dokumentaci operátora unie mysql , ve výchozím nastavení filtr mysql pro odlišné hodnoty:

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)

poté poslední dotaz je:

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

Všimněte si, že distinct není povinné.

Pouze v případě, že potřebujete čárkový řetězec, je nutné první řešení:

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. Stačí mysql_real_escape_string pro Anti SQL Injection?

  2. Správné indexování při použití operátoru OR

  3. mysql Hodnota NULL v kde v CLAUSE

  4. Oracle Database Developer Choice Awards