2016-11-15 72 views
-3

後的數我有給了我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 

什麼是最好的方式來測試我失去了哪些行,爲什麼?我如何防止這種情況發生?我想,也許一些建築物沒有調查成本,因此它只顯示那些有成本的建築物,但我認爲那裏有一些空值,所以這不是問題,我想。

如果您需要額外信息,請告訴我。由於

+1

[如何加入(合併)數據幀(內,外,左,右)?](http://stackoverflow.com/questions/1299871/how-to-join-merge-data-frames -inner-outer-left-right) –

+1

結果中有'NULL'值,因爲'SurveyTable'中的一些記錄在'surveyCost'字段中有'NULL'。但是由於一些建築物沒有調查,所以你們「丟失了行」。查看使用'LEFT JOIN'而不是'INNER JOIN'並在查詢中添加'b.address'來查看'NoSurvery'和'SurveyWithNULLCost'之間的區別。 – MatBailie

回答

0

要找到你已經失去了行,只是一個left join更換inner join和尋找失蹤行:

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

注意行可以阿爾斯o在兩個表中都有重複,所以你可能會有比你想象的更多的缺失行。

0

你可以找到哪些行丟失USIG行原來的查詢,得到的查詢,其中加入之間的左連接是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 

但爲什麼..取決於你的數據的知識