代码之家  ›  专栏  ›  技术社区  ›  Yanayaya

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

  •  -2
  • Yanayaya  · 技术社区  · 6 年前

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

    我已经在stack和google上搜索了这个问题的答案,但是所有的结果都显示了使用“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 回复  |  直到 6 年前
        1
  •  1
  •   George Menoutis    6 年前

    首先,你的查询是否有效?世上没有 LEFT INNER JOIN ;你可能有一个 INNER JOIN A LEFT JOIN ,或者 LEFT OUTER JOIN ,后两者相同。

    其次,我可以理解您不愿意做额外的子查询,但是为什么您反对 DISTINCT 操作员?

    第三,如果你使用 GROUP BY 放在那里 只有 你想要的字段,等于 独特的 接线员将返回您需要的结果。

    最后但并非最不重要的一点是,如果我们想帮助你,你需要告诉我们你得到了什么,你想要什么。