MYSQL Различия для двух столбцов

Я получил две колонки: отправитель, получатель в моей таблице. Я хочу получить отличительные для обоих столбцов, где отправитель или получатель равен b, а затем объединить их в строку.

....................
sender  |  receiver
....................
a            b
c            b
b            a
b            c
d            f
b            e
b            e
e            b

Набор результатов должен выглядеть как a, b, c, e

Что я должен сделать, чтобы достичь этого?

-2

Решение

Вы можете просто сделать 2 объединенных запроса, чтобы получить значения. Союз должен устранить дубликаты. Затем вы можете использовать это как подзапрос и выполнить GROUP_CONCAT для результатов:

SELECT GROUP_CONCAT(aCol)
FROM
(
SELECT sender AS aCol
FROM SomeTable
WHERE sender = 'b'
OR receiver = 'b'
UNION
SELECT receiver AS aCol
FROM SomeTable
WHERE sender = 'b'
OR receiver = 'b'
) sub0
1

Другие решения

Взгляните на эту тему: MySQL SELECT DISTINCT несколько столбцов

SELECT DISTINCT value FROM
(
SELECT DISTINCT a AS value FROM my_table
UNION
SELECT DISTINCT b AS value FROM my_table
UNION
SELECT DISTINCT c AS value FROM my_table
) AS derived
1

Попробуй это:

create table test (sender char(1), receiver char(1));
insert into test values ('a','b'), ('c','b'), ('b','a'), ('b','c'), ('d','f'), ('b','e'), ('b', 'e'), ('e', 'b');

select group_concat(sender  separator ',') as result
from (
select sender from test where receiver = 'b'
union
select 'b'
) alias;

+---------+
| result  |
+---------+
| a,c,e,b |
+---------+

Если вы хотите алфавитный порядок, вы можете заменить select 'b' с select 'b' order by sender и вы получите a,b,c,e в результате

1
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector