【问题标题】:MySQL where clause with null valuesMySQL where 具有空值的子句
【发布时间】:2015-04-07 08:54:05
【问题描述】:

我有这个看起来像这样的 sql 语句:

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)

即使某些值为空,我也想包含行,这适用于此代码,但是当我取消注释 where 子句时,它不再包含空列。我试图做 where (adresse.adresseType = 1 or adresse =null) 但它没有效果。有什么解决办法吗?

【问题讨论】:

  • 你应该我们“是 NULL”而不是“=NULL”
  • 这可能是原因。它现在通过在左连接子句上使用“AND postadresse_adresse.adresseType=1”来工作

标签: mysql null left-join where


【解决方案1】:

试试这个:

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)

【讨论】:

  • 这是不正确的! NULL=NULL 表达式返回 NULL,而不是 true。你应该使用 (adresse.adresseType is NULL)
  • @DobromirVelev:- 谢谢。更新了我的答案!
  • 感谢您的回答!我想通了,现在正在这样做:LEFT JOIN adresse postadresse_adresse ON hovedenhet.organisasjonsnummer = postadresse_adresse.organisasjonsnummer AND postadresse_adresse.adresseType=1
【解决方案2】:

尝试使用

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

【讨论】:

    【解决方案3】:

    目前使用:

       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
    

    感谢您的回答!

    【讨论】:

      猜你喜欢
      • 2021-05-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-24
      • 2016-01-04
      • 1970-01-01
      相关资源
      最近更新 更多