首页 > 解决方案 > MySQL 空行仅在表为空时显示

问题描述

我有 2 个 MySQL 表,一个名为_campi(Italian for fields),一个名为documenti(Italian for documents)。

我需要显示所有来自_campi和哪里有匹配的行,documenti这必须显示在一个字段中作为结果。

我无法理解的奇怪行为是,如果documenti表为空,我会得到预期的结果(10 行有许多空值,预期结果),如果 documenti 不是空的,我只会得到 2 行的结果。

这是查询:

SELECT *, campi_tipologie.valore_campo as tipo_doc FROM _campi as campi_tipologie
        LEFT JOIN documenti
        ON documenti.doc_type = campi_tipologie.id_campo
        WHERE campi_tipologie.categoria = "documenti-immobili"
        AND (campi_tipologie.codec = 2 OR campi_tipologie.codec = 0)
        AND (documenti.id_immobile IS NULL OR documenti.id_immobile = 422)
        ORDER BY id_campo

我究竟做错了什么?

标签: mysql

解决方案


SELECT campi 
     , I
     , actually
     , want
     , c.valore_campo tipo_doc
  FROM _campi c
  LEFT 
  JOIN documenti d
    ON d.doc_type = c.id_campo
   AND d.id_immobile = 422
 WHERE c.categoria = "documenti-immobili"
   AND c.codec IN(2,0)
   AND d.id_immobile IS NULL  -- or omit this
 ORDER 
    BY c.id_campo

推荐阅读