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
我试图做但没有按预期得到结果。 如何使用子查询或连接执行此操作?
谢谢。
答案 0 :(得分:3)
这是我在评论中尝试描述的内容,您可以使用group-concat
select t.aid,group_concat(t2.bid) bid
from t
join t2 using(aid)
group by t.aid
select t2.aid,group_concat(t2.bid) bid
from t2
group by t2.aid
请注意,根据文档,它具有连续字符的默认限制。结果被截断为group_concat_max_len系统变量给出的最大长度,该变量的默认值为1024.值可以虽然返回值的有效最大长度受max_allowed_packet
的限制,但设置得更高
答案 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
输出
| AID | BIDS | NAME |
|-----|---------|------|
| 1 | 111 | aaa |
| 2 | 222 | bbb |
| 3 | 333,444 | ccc |
| 4 | 555 | ddd |