MySQL查询BETWEEN Null和大事

时间:2014-11-07 16:22:40

标签: mysql

首先在这里发帖给我。

我对MySQL很新,但我尽力做到最好。我搜索过网络,发现包含Null的查询可能非常麻烦。

我会尝试解释我的问题。 我有一个包含土壤分析的表,大约有400k行,大约有30列。某些字段没有值,而是具有Null。 我让用户为7个不同的列指定最小值和最大值之间的范围。 所以我在PHP中有14个不同的变量。

如果用户没有指定我将最小变量设置为0,最大值设置为100000.现在出现问题,因为表中的某些值包含Null,BETWEEN比较在我尝试时不起作用与Null比较。

然后整行不会包含在结果中,我想要包含该行的其他值。 如果有任何帮助,我已经包含了我的查询。 真的想要一些帮助。我觉得这个问题是可以解决的,但是我已经尝试了一段时间的谷歌搜索,并且找不到其他有同样问题的人。

/西蒙

$sql = "SELECT `kundnr`, `Year`, `Provnr`, `pH`, `P_AL`, `P_HCl`, `K_AL`, `K_HCl`, `Mg_AL`,
        `Cu_HCl`, `K_Mg_kvot`, `Bor`, `Ca_AL`, `Total_lerhalt`, `Sand_grovmo`, `Mullhalt`

        FROM `analyser`

        WHERE (`pH` > 0)

        AND (`pH` BETWEEN $minph AND $maxph)
        AND (`P_AL` BETWEEN $minpal AND $maxpal)
        AND (`K_AL` BETWEEN $minkal AND $maxkal)
        AND (`Mg_AL` BETWEEN $minmg AND $maxmg)
        AND (`Total_lerhalt` BETWEEN $minler AND $maxler)
        AND (`Mullhalt` BETWEEN $minmull AND $maxmull)
        AND (`Sand_grovmo` BETWEEN $minsgrovmo AND $maxsgrovmo)

        LIMIT 0,$limitrows";

1 个答案:

答案 0 :(得分:0)

如果您希望包含空值的行,请将null s替换为最小(或最大)值:

例如为:     AND (IFNULL( {K_AL {1}}