MYSQL两个列的区别

时间:2015-11-05 14:40:53

标签: php mysql distinct concat

我有两列:发送者,接收者在我的表中。我希望得到发送者或接收者等于b的两个列的不同,然后将它们连接成字符串。

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

结果集应该看起来像a,b,c,e

我该怎么做才能实现这个目标?

3 个答案:

答案 0 :(得分:1)

看一下这个主题: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

答案 1 :(得分:1)

您可以执行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

答案 2 :(得分: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