SQL语句(几张表在一起联合查询,去掉重复记录)

1.如分别有A,B,C,D四张表,A,B,C,D关联在一起如:
SELECT * FROM((A Inner join B By A.Id =B.AId) Inner join C By B.Id =C.BId)Inner join D By C.Id =D.CId Where 条件一 AND 条件二... ORDER BY D.Time ASC
取出来的结果集中去掉A表中ID重复对应的记录(因为A表与其B,C,D表是一对多的关系),只留下A表Id不相同(相同的只留下一个)的记录。请问Sql语句应该怎么写能?
测试了使用:
1.SELECT DISTINCT FROM(SELECT * FROM((A Inner join B By A.Id =B.AId) Inner join C By B.Id =C.BId)Inner join D By C.Id =D.CId Where 条件一 AND 条件二... ORDER BY D.Time ASC) 结果是错误的。
2.SELECT * FROM((A Inner join B By A.Id =B.AId) Inner join C By B.Id =C.BId)Inner join D By C.Id =D.CId Where 条件一 AND 条件二... GROUP BY A.Id ORDER BY D.Time ASC) 提示错误。

阅读 5.9k
2 个回答
新手上路,请多包涵

用group by A.id。

with t_a as (select DISTINCT id from table_a)
select t_a.id, nvl(b.col1, 0) col1, nvl(c.col2, 0) col2
from t_a
left join table_b b on t_a.id=b.id and 其他条件
left join table_c c on t_a.id=c.id
left join table_d d on t_a.id=d.id
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进