Php MYSQL用于两列
我的表中有两列:发送方和接收方。我想得到发送方或接收方等于b的两列的distinct,然后将它们合并为字符串Php MYSQL用于两列,php,mysql,distinct,concat,Php,Mysql,Distinct,Concat,我的表中有两列:发送方和接收方。我想得到发送方或接收方等于b的两列的distinct,然后将它们合并为字符串 .................... sender | receiver .................... a b c b b a b c d f b e b e e
....................
sender | receiver
....................
a b
c b
b a
b c
d f
b e
b e
e b
结果集应类似于a、b、c、e
要实现这一点,我应该做些什么?看看这个线程:
您只需执行两次联合查询即可获得值。工会应该消除重复。然后,您可以将其用作子查询,并对结果进行分组查询:-
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 |
+---------+
如果您想要按字母顺序排序,您可以将
选择“b”
替换为按发件人选择“b”顺序
,您将得到a、b、c、e
,结果是a、b、c、e如果您对它们进行排序,您有两个字母,因此结果a、b、c、e
将是两对。第二对不包含b
,因此我很好奇您是如何得到这个结果的……而且,这可能可以在SQL中完成。您正在寻找MySQL解决方案吗?如果是这样,请删除PHP标记,因为它与查询本身无关。要结束您的问题,请将任何一个答案标记为已接受,如果它们对您有帮助。
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 |
+---------+