MySQL查询在NULL比较和NULL联接时返回错误的结果



所以我有一个查询

SELECT count(*) from table where  cat='green' and state = state and product = product
Result: 15000

现在,当我使用附加条件运行相同的查询时,应该会得到真正的

SELECT count(*) from table where cat='green' and state = state and product = product and lga = lga
Result: 0

请问到底出了什么问题???我假设lga=lga的结果应该为真,就像1=1的结果为真一样

编辑:表模式:

id int(11(NO PRI NULL auto_incrementcat varchar(128(NO NULL
state varchar(8(YES NULL
lga varchar(20(YES NULL
product varchar(150(NO NULL

为了添加更多的上下文,我有一个带有过滤器的页面,所以我能确保过滤器灵活的唯一方法是按照我的方式实现它。

如果cat = 'green'的所有记录的lga字段都是NULL,则会发生这种情况,因为NULL = NULL将过滤掉所有记录"NULL值不等于任何值,甚至不等于它本身">

我认为你可以采取的一种方法是将条件封装在ISNULL()

and IFNULL(lga,TRUE) = IFNULL('user provided input here',TRUE);

请看小提琴:http://sqlfiddle.com/#!9/83c3a4/11

最新更新