假设我有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
正如您在第一列中看到的那样,所有这些都是有点重复。是否可以修改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
非常感谢!
答案 0 :(得分:3)
您使用的是什么DBMS?
我不能代替别人,但在MySQL中,从4.1开始,你可以使用GROUP_CONCAT
http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_group-concat
EG:
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
答案 1 :(得分:0)