我有两列:发送者,接收者在我的表中。我希望得到发送者或接收者等于b的两个列的不同,然后将它们连接成字符串。
....................
sender | receiver
....................
a b
c b
b a
b c
d f
b e
b e
e b
结果集应该看起来像a,b,c,e
我该怎么做才能实现这个目标?
答案 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