Mysql
 sql >> база данни >  >> RDS >> Mysql

sql различен, получавайки 2 колони

Трябва да обедините двете колони и след това да филтрирате за различни стойности:

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 union , по подразбиране, 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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL:Автоматично увеличение само с четни или нечетни числа?

  2. mysqli_query() винаги връща true

  3. Покажете името на рецептата, ако всички нейни съставки вече са дадени

  4. Избор въз основа на пътя в mysql

  5. Можем ли да използваме EF миграции с MySql