2015-04-07 70 views
2

我有這樣的SQL語句看起來像這樣:的MySQL在那裏與空子句值

SELECT hovedenhet.organisasjonsnummer, adresse.adresse , poststed.poststed, land.navn, kontaktdata.epostadresse 
FROM hovedenhet 
LEFT JOIN adresse on hovedenhet.organisasjonsnummer = adresse.organisasjonsnummer 
LEFT JOIN poststed on poststed.poststed_id=adresse.poststed_id 
LEFT JOIN land on land.land_id = adresse.land_id 
LEFT JOIN kontaktdata on kontaktdata.organisasjonsnummer = hovedenhet.organisasjonsnummer 
#where (adresse.adresseType=1) 

我想包括行即使一些值爲null,這正常工作與此代碼,但是當我取消註釋where子句,它不再包含空列。我試圖去做(adresse.adresseType = 1或adresse = null),但它沒有效果。有沒有解決這個問題的方法?

+3

你應該是我們「是NULL」不是「= NULL」 –

+0

這可能是原因是的。現在通過在左連接子句 –

回答

4

試試這個:

SELECT hovedenhet.organisasjonsnummer, adresse.adresse , poststed.poststed, land.navn, kontaktdata.epostadresse 
FROM hovedenhet 
LEFT JOIN adresse on hovedenhet.organisasjonsnummer = adresse.organisasjonsnummer 
LEFT JOIN poststed on poststed.poststed_id=adresse.poststed_id 
LEFT JOIN land on land.land_id = adresse.land_id 
LEFT JOIN kontaktdata on kontaktdata.organisasjonsnummer = hovedenhet.organisasjonsnummer 
where (adresse.adresseType = 1 or adresse.adresseType is null) 
+1

上使用「AND postadresse_adresse.adresseType = 1」開始工作。這是不正確的! NULL = NULL表達式返回NULL,不正確。你應該使用(adresse.adresseType爲NULL) –

+1

@DobromirVelev: - 謝謝。更新了我的答案! –

+2

Upvote - 這應該工作 –

1

嘗試使用

where (adresse.adresseType = 1 or adresse is null) 
0

目前正在使用:

SELECT hovedenhet.organisasjonsnummer, adresse.adresse , poststed.poststed, 
    land.navn, kontaktdata.epostadresse 
    FROM hovedenhet 
    LEFT JOIN adresse on hovedenhet.organisasjonsnummer = adresse.organisasjonsnummer 
AND adresse.adresseType=1 
    LEFT JOIN poststed on poststed.poststed_id=adresse.poststed_id 
    LEFT JOIN land on land.land_id = adresse.land_id 
    LEFT JOIN kontaktdata on kontaktdata.organisasjonsnummer = hovedenhet.organisasjonsnummer 

感謝您的答案!