sql左联接并在结果中重复
假设我有两个表,A和B,每个A实体可能有多个B实体,在一种情况下,如果我想得到某个A的所有B,我可以用一个简单的左连接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,
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