我的INNER JOIN复制数据时遇到问题。我有一个故障表和一个存储图像文件路径的媒体表。
表1:错误
表2:媒体
用户将他们的错误上传到表:fault,然后最多7个图像以支持他们在table:media中的应用程序。目前,当上传5张图像时,故障数据重复5次。
SELECT * FROM fault INNER JOIN media ON media.syncReportID = fault.faultID where faultID = {0}
这没关系,但是当您内部加入某些内容时,会为连接表中的每个项目返回所有内容。
这SO表明:DISTINCT-我没有例外,但它对我不起作用。
SELECT DISTINCT * FROM fault INNER JOIN media ON media.syncReportID = fault.faultID where faultID = {0}
这篇SO文章here建议:OUTER APPLY
和GROUP BY
但老实说我不理解这些文章中的复杂语法。
有人可以建议哪种SQL命令最适合允许多个图像到一个故事的能力,而不会多次重复故事。
这可能在这里吗?
提前致谢!
答案 0 :(得分:1)
我怀疑你想要:
SELECT f.*, m.*
FROM fault f CROSS APPLY
(SELECT TOP 1 m.*
FROM media m
WHERE m.syncReportID = f.faultID
) m
WHERE faultID = {0};
如果您总是希望返回一行,即使没有匹配的条目,也会使用OUTER APPLY
。
答案 1 :(得分:0)
您可能需要指定要区分的字段 喜欢:
SELECT DISTINCT fault.faultId,...... FROM fault INNER JOIN media ON media.syncReportID = fault.faultID where faultID = {0}