关于sql进行表关联查询

风祭_将 发布于 2016/09/02 14:39
阅读 175
收藏 0
SQL

当有A , B , C , D 四张表进行关联查询是,想要以A表作为基础数据进行关联查询。


使用select  ... from A left join B on a.id=b.id  left join C on a.id=c.id left join D on a.id = d.id where .....  这样的sql出来的数据是A表的信息是存在重复的,好像用group by a.id后可以去重。

    但是如果不能做group by的时候,有没有办法在join多张表的时候能够以都一张表的基础数据做关联,而不出现重复呢?求大神解答啥

加载中
0
太黑_thj
太黑_thj
你这是在逗我吗?  这样出来的数据还能重复  除非你的A表的ID不是唯一键
0
skhuhu
skhuhu
left join 你已经用了···你A 表没重复数据 就不会重复··group by 不是去重的··千万记得````去重是distinct
0
亭舸翁
亭舸翁
对于一个a.id,如果在B表中有多行的b.id=a.id,join的结果就会是多行。这时你得在B中去掉部分行(比如oracle可以用窗口函数)再join
0
绝对是路过
如果其他表的id如果存在多个,可以先在子查询中排重再连接
0
whatwhowhy
whatwhowhy
楼主在逗吗?你用表连接出来的数据会重?我觉得你应该是用错基表了,所以你才会这么说。再说group by是干嘛的,你用来去重,666
0
whatwhowhy
whatwhowhy

引用来自“whatwhowhy”的评论

楼主在逗吗?你用表连接出来的数据会重?我觉得你应该是用错基表了,所以你才会这么说。再说group by是干嘛的,你用来去重,666
楼主意思是不是说a有三条数据,b有五条数据,连接查询后你想只展示a的三条数据,结果展示的却是b的五条数据
0
IdleMan
IdleMan
看上去很多人不明白1-N的ER关系
返回顶部
顶部