无法在SQL连接中找到缺少的匹配行

时间:2016-09-14 14:31:42

标签: sql sql-server sql-server-2008

SQL的新手,请耐心等待。
我有两个表,一个是Locations表,一个是FileImport表。
我每天获取文件,然后导入它们,然后根据Locations表中的位置进行排序。
我常用的跟踪遗漏方法是通过Excel完成的,但必须有一个更简单的SQL方法。
我目前有以下查询:

SELECT dbo.Location.LocationDesc, 
       dbo.FileImport.LocationName, 
       dbo.FileImport.CreatedDate, 
       dbo.FileImport.FileName
FROM dbo.FileImport left OUTER JOIN dbo.Location 
      ON dbo.FileImport.LocationName = dbo.Location.LocationDesc
where CAST(dbo.FileImport.CreatedDate AS Date) = '2016-09-14' 

有一些较旧的地理位置未在“地理位置”表格中使用,但目前我想在Locations表格中找到所有地理位置 39;当天有相应的上传内容,我们将不胜感激。

干杯

5 个答案:

答案 0 :(得分:1)

SELECT dbo.Location.LocationDesc, dbo.FileImport.LocationName, dbo.FileImport.CreatedDate, dbo.FileImport.FileName

FROM         dbo.Location

left OUTER JOIN   dbo.FileImport   ON dbo.FileImport.LocationName = dbo.Location.LocationDesc
                     and CAST(dbo.FileImport.CreatedDate AS Date) = '2016-09-14'

where   dbo.FileImport.LocationName is null

答案 1 :(得分:1)

试试这个,

{{1}}

答案 2 :(得分:1)

这将为您提供2016年9月14日没有文件导入的所有地点

SELECT loc.LocationDesc
FROM
dbo.Location loc
where not exists 
(select null from 
dbo.FileImport fi
where fi.LocationName = loc.LocationDesc
and CAST(dbo.FileImport.CreatedDate AS Date) = '2016-09-14');

答案 3 :(得分:0)

尝试以下查询。它会导致转储中出现的位置,但不会出现在 dbo.Location 表中。

SELECT  fi.LocationName, fi.LocationName, fi.CreatedDate, fi.FileName
FROM    dbo.FileImport AS fi
WHERE   NOT EXISTS (SELECT * FROM dbo.Location AS l WHERE fi.LocationName = l.LocationDesc
                      AND CAST(fi.CreatedDate AS Date) = '2016-09-14'
                      ) 

答案 4 :(得分:0)

使用此查询

SELECT L.LocationDesc
    ,FI.LocationName
    ,FI.CreatedDate
    ,FI.FileName
FROM dbo.FileImport FI
RIGHT OUTER JOIN dbo.Location L ON FI.LocationName = L.LocationDesc
    AND CAST(FI.CreatedDate AS DATE) = '2016-09-14'
WHERE FI.LocationDesc IS NULL