如何删除SQL中返回的相关数据上的重复行?

时间:2019-01-25 14:39:07

标签: sql sql-server join

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

我已经通过堆栈和谷歌搜索了答案,但是所有结果都显示了使用“ 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

1 个答案:

答案 0 :(得分:1)

首先,您的查询是否还有效?没有LEFT INNER JOIN这样的东西;您可能拥有INNER JOINLEFT JOINLEFT OUTER JOIN,而后两个相同。

第二,我可以理解您不愿意进行额外的子查询,但是您为什么反对DISTINCT运算符?

第三,如果您使用GROUP BY并仅在其中放置所需的字段,则DISTINCT运算符将等效于该字段,并将返回所需的结果。

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