Mysql SQL查询返回错误的结果
我的表中有一列名为“process”,它是布尔类型,默认值为NULL。当我将所有行的“process”值设置为NULL并执行查询时Mysql SQL查询返回错误的结果,mysql,sql,Mysql,Sql,我的表中有一列名为“process”,它是布尔类型,默认值为NULL。当我将所有行的“process”值设置为NULL并执行查询时 SELECT * FROM `tablename` WHERE `process` != 1 MySQL返回一个空的结果集。当我这样做的时候,我也得到了同样的结果 SELECT * FROM `tablename` WHERE `process` = NULL 此外,当我使用PHP打印行时 $result = mysqli_query($conn, "SELEC
SELECT * FROM `tablename` WHERE `process` != 1
MySQL返回一个空的结果集。当我这样做的时候,我也得到了同样的结果
SELECT * FROM `tablename` WHERE `process` = NULL
此外,当我使用PHP打印行时
$result = mysqli_query($conn, "SELECT * FROM log");
while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)){
if ($row['process'] != 1)
echo $row['time']." ".$row['event']."\n";
}
我没有得到一个空的结果集。
谁能给我解释一下问题出在哪里
谢谢。要获取具有
空值的记录
您应该使用isnull()
而不是column=NULL
SELECT * FROM `tablename` WHERE ISNULL(`process`);
您可以使用IS NULL
SELECT * FROM tablename WHERE process IS NULL
如果将逻辑false定义为布尔列不等于1(表示0或NULL
),则应使用此逻辑:
SELECT *
FROM tablename
WHERE process <> 1 OR process IS NULL;
启动SQL时:
SELECT * FROM `tablename` WHERE `process` != 1
结果集返回为空,因为这将查找没有值“1”的记录。NULL不是一个值
SELECT * FROM `tablename` WHERE `process` = NULL
这听起来完全错误,因为我已经告知“NULL”不是一个值。当然,这是你尝试应用的错误方法
简而言之,NULL不是一个值,因此它不能等于或不等于任何东西它与0不同,0是一个值
检查以更好地理解
希望这对你有帮助 Null不是列可以具有的值。它更像一种状态,因此你需要写作
SELECT * FROM `tablename` WHERE `process` IS NULL
此外,您不能使用!=,反转子句,您需要在这种情况下使用。我认为第二个查询应该类似于SELECT*FROM tablename,其中process为NULL
或process1
可能的重复。有人能解释一下这个答案的错误吗?-谁投了反对票?为什么不处理呢1
工作?我认为这两个符号之间的唯一区别是标准,而不是。@CassieLiu事实上=
和
在逻辑上是等价的;没有区别。NULL
是数据库字段中缺少值,不能比较NULL值本身。这有意义吗?“这是你对更多差异的回答。@Ghanshyambava我刚刚编辑了这个问题。你能再看一下吗?
SELECT * FROM `tablename` WHERE `process` IS NULL