Mysql查询到concat行

时间:2014-06-09 12:02:30

标签: mysql join subquery

Mysql表结构是

B1 //表1

aid         name     
1            aaa
2            bbb
3            ccc
4            ddd

B2 //表2

bid         aid
111          1
222          2
333          3
444          3
555          4

我想显示如下的数据

aid      bid             name
1        111              aaa
2        222              bbb
3        333,444          ccc
4        555              ddd

我试图做但没有按预期得到结果。 如何使用子查询或连接执行此操作?

谢谢。

2 个答案:

答案 0 :(得分:3)

这是我在评论中尝试描述的内容,您可以使用group-concat

加入方法

select t.aid,group_concat(t2.bid) bid
from t
join t2 using(aid)
group by t.aid 

Demo

单表方法

select t2.aid,group_concat(t2.bid) bid
from t2
group by t2.aid 

Demo

  

请注意,根据文档,它具有连续字符的默认限制。结果被截断为group_concat_max_len系统变量给出的最大长度,该变量的默认值为1024.值可以虽然返回值的有效最大长度受max_allowed_pa​​cket

的限制,但设置得更高

答案 1 :(得分:1)

您可以使用group_concat

SELECT
    B1.aid,
    GROUP_CONCAT(DISTINCT B2.bid) bids,
    B1.name
FROM B1
LEFT JOIN B2 ON B1.aid = B2.aid
GROUP BY B1.aid

Fiddle Demo

输出

| AID |    BIDS | NAME |
|-----|---------|------|
|   1 |     111 |  aaa |
|   2 |     222 |  bbb |
|   3 | 333,444 |  ccc |
|   4 |     555 |  ddd |