加入后减少的行数

时间:2016-11-15 19:05:05

标签: sql join

我有一个查询,它给了我759行:

Select
    buildingID
   ,buildingAddress
   ,building_zip
From
   BuildingTable

但是,当我加入表以从另一个表中获取列时,行数减少到707

Select
   buildingID
   ,buildingaddress
   ,building_zip
   ,b.surveyCost
From
   BuildingTable as A

   Inner Join SurveyTable as B
   On a.buildingAddress = b.address

测试哪些行丢失的最佳方法是什么?为什么?以及如何防止这种情况发生?我在想,也许有些建筑物没有调查成本,因此它只向我展示了那些有成本的建筑物,但我认为那里有一些空值,所以这不是问题,我想。

如果您需要额外信息,请通知我。感谢

2 个答案:

答案 0 :(得分:0)

您可以在原始查询和结果查询之间找到哪些行丢失的行,其中连接为nulll

Select
    buildingID
   ,buildingAddress
   ,building_zip
From
   BuildingTable t1
   left join ( 
    Select
       buildingID
       ,buildingaddress
       ,building_zip
       ,b.surveyCost
    From
       BuildingTable as A
       Inner Join SurveyTable as B
       On a.buildingAddress = b.address
       ) t2 on t1.buildingID  =  t2.buildingID
where  t2.buildingID is null

但为什么......取决于你对数据的了解

答案 1 :(得分:0)

要查找丢失的行,只需将inner join替换为left join并查找缺少的行:

Select bt.*
From BuildingTable bt left join
     SurveyTable st
     on bt.buildingAddress = st.address
where st.address is null;

请注意,两个表中的行也可以重复,因此您可能会缺少比预期更多的行。