sql - 如何删除 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
解决方案
首先,您的查询是否有效?没有这样的事情LEFT INNER JOIN
; 您可能有 a INNER JOIN
、 aLEFT JOIN
或 a LEFT OUTER JOIN
,后两者相同。
其次,我可以理解您不愿意进行额外的子查询,但是您为什么反对DISTINCT
运营商?
第三,如果您使用 aGROUP BY
并仅将您想要的字段放在那里,它将等同于DISTINCT
运算符并将返回您需要的结果。
最后但并非最不重要的一点是,如果我们能够为您提供更多帮助,您需要向我们展示您正在得到什么以及您想要什么。
推荐阅读
- angular - Angular BehaviouralSubjects
- android - 如何解析 response.body okhttp
- javascript - Jquery .load() 仅父级并忽略子级
- amazon-web-services - Terraform for AWS 中的入口安全组是什么
- php - 未捕获的异常 PDOException : 完整性约束违规错误
- function - 发送一个函数去 html/模板有一个错误:函数“”未定义
- c++ - 使用 FFmpeg 解码 YUYV422 原始图像
- python - 查询在 bigquery Web UI 中返回非空数据集,但在 python 脚本中设置为空
- c++ - 如何在c ++中拆分字符串的一部分?
- raspberry-pi - 发送失败时从 gammu 发件箱中删除短信