[英]MYSQL Distinct for two column
我有两列:发送者,我的表中的接收者。 我想为发送者或接收者等于 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'
替换为select 'b' order by sender
,您将得到a,b,c,e
作为结果
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.