繁体   English   中英

两列的MYSQL不同

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM