我有一个查询,它给了我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
测试哪些行丢失的最佳方法是什么?为什么?以及如何防止这种情况发生?我在想,也许有些建筑物没有调查成本,因此它只向我展示了那些有成本的建筑物,但我认为那里有一些空值,所以这不是问题,我想。
如果您需要额外信息,请通知我。感谢
答案 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;
请注意,两个表中的行也可以重复,因此您可能会缺少比预期更多的行。