mark:今天测试写sql,写出来发现搜不出对应的数据,然后通过排查,发现是子查询的问题,下面是原sql:
下面在子查询里加了条件,能搜出数据:
原因是:在SQL查询中,使用
IS NOT NULL
子句是为了确保从子查询中排除那些wechat_user_id
为NULL的记录。如果不包含IS NOT NULL
条件,子查询(SELECT t2.wechat_user_id FROM sr_merchant AS t2)
可能会返回包含NULL值的结果集。在比较操作中,如果一个表达式与NULL进行比较,不论是等于
=
还是不等于!=
,甚至是使用IN
或NOT IN
操作符,对于NULL值都会得到不确定的结果。具体来说:
NULL = something
或NULL IN (values)
返回未知(Unknown),而不是真(True)或假(False)。NULL != something
或NULL NOT IN (values)
同样返回未知(Unknown)。