首页 > 解决方案 > 如何删除 SQL 中返回的相关数据上的重复行?

问题描述

我有一个查询,它将许多相关的表连接在一起,因此,它为那些具有多个数据的项目返回重复的行。

我已经在堆栈和谷歌上搜索了这个问题的答案,但所有结果都显示了使用“DISTINCT”或创建子查询之类的东西。我无法找到任何解决方案,我认为我面临的困惑是因为我有很多加入。

有人可以指导我如何阻止我的结果显示重复吗?到目前为止,这是我的查询。

SELECT dbo.Vessel.VesselId, 
       dbo.Vessel.Name, 
       dbo.Capacity.DeckAreaM2, 
       dbo.Vessel.DPClassId, 
       dbo.Subsea.Accomodation, 
       dbo.Subsea.RovHangar, 
       dbo.Crane.SWL
FROM   dbo.Vessel INNER JOIN
       dbo.Capacity ON dbo.Vessel.VesselId = dbo.Capacity.VesselId LEFT OUTER JOIN
       dbo.DeckEquipment ON dbo.Vessel.VesselId = dbo.DeckEquipment.VesselId LEFT OUTER JOIN
       dbo.Crane ON dbo.DeckEquipment.DeckEquipmentId = dbo.Crane.DeckEquipmentId LEFT OUTER JOIN
       dbo.Subsea ON dbo.Vessel.VesselId = dbo.Subsea.VesselId

标签: sqlsql-serverjoin

解决方案


首先,您的查询是否有效?没有这样的事情LEFT INNER JOIN; 您可能有 a INNER JOIN、 aLEFT JOIN或 a LEFT OUTER JOIN,后两者相同。

其次,我可以理解您不愿意进行额外的子查询,但是您为什么反对DISTINCT运营商?

第三,如果您使用 aGROUP BY将您想要的字段放在那里,它将等同于DISTINCT运算符并将返回您需要的结果。

最后但并非最不重要的一点是,如果我们能够为您提供更多帮助,您需要向我们展示您正在得到什么以及您想要什么。


推荐阅读