MYSQL 两列不同

MYSQL Distinct for two column

我的 table 中有两列:发件人、收件人。我想在发送者或接收者等于 b 的两列中得到不同的值,然后将它们连接成字符串。

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

结果集应该类似于 a,b,c,e

我应该怎么做才能做到这一点?

看看这个线程:MySQL SELECT DISTINCT multiple columns

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

您只需执行 2 个联合查询即可获取值。 Union 应该消除重复项。然后您可以将其用作子查询并对结果执行 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

试试这个:

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' order by sender替换select 'b',你会得到a,b,c,e作为结果