首先在这里发帖给我。
我对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";
答案 0 :(得分:0)
如果您希望包含空值的行,请将null
s替换为最小(或最大)值:
例如为:
AND (IFNULL(
{K_AL {1}}