sql左联接并在结果中重复

sql左联接并在结果中重复,sql,join,Sql,Join,假设我有两个表,A和B,每个A实体可能有多个B实体,在一种情况下,如果我想得到某个A的所有B,我可以用一个简单的左连接 select A.id aid,B.id bid from A left join B on B.aid = A.id where A.id = 1 它将返回一个结果集,如 aid bid 1 1 1 2 1 3 正如您在第一列中看到的,所有这些1都有点重复。是否可以修改SQL语句,让他返回如下结果 aid bid 1 1,2,

假设我有两个表,A和B,每个A实体可能有多个B实体,在一种情况下,如果我想得到某个A的所有B,我可以用一个简单的左连接

select A.id aid,B.id bid from A
left join B on B.aid = A.id
where A.id = 1
它将返回一个结果集,如

aid   bid
1     1
1     2
1     3
正如您在第一列中看到的,所有这些1都有点重复。是否可以修改SQL语句,让他返回如下结果

aid    bid
 1      1,2,3
换句话说,将所有投标作为一个实体联系在一起

另外,如果有另一个表C,并且每个表A可以有多个C,那么如何使SQL返回一个结果集,如

 aid    bid    cid
  1     1,2,3   1,2
而不是

 aid     bid    cid
  1       1      1
  1       2      1
  1       3      1
  1       1      2
  1       2      2
  1       3      2 

多谢各位

您使用的是什么数据库管理系统

我不能代表其他人说话,但在MySQL中,从4.1开始,您可以使用GROUP_CONCAT

例如:


您使用的是什么数据库管理系统

我不能代表其他人说话,但在MySQL中,从4.1开始,您可以使用GROUP_CONCAT

例如:


尝试使用COALESCE函数


尝试使用合并功能


我不认为它存在这种类型的查询中没有的任何性能问题。我不认为它存在这种类型的查询中没有的任何性能问题。
select A.id aid, GROUP_CONCAT(DISTINCT B.id) bid from A
left join B on B.aid = A.id
where A.id = 1
GROUP BY a.id