Mysql SQL--SELECT返回列为True时的值,但不返回列为False时的值
%%读sqlMysql SQL--SELECT返回列为True时的值,但不返回列为False时的值,mysql,sql,mysql-python,Mysql,Sql,Mysql Python,%%读sql SELECT Language, IsOfficial FROM countrylanguage c JOIN country a ON a.Code = c.CountryCode WHERE Name = "United States" AND IsOfficial = False; 基本上,我有一段代码列出了一个国家的语言(基于现有的表) 当我设置Isoficial=True(该语言是该国家的官方语言)时,它会正确显示Isofi
SELECT Language, IsOfficial
FROM countrylanguage c
JOIN country a
ON a.Code = c.CountryCode
WHERE Name = "United States"
AND IsOfficial = False;
基本上,我有一段代码列出了一个国家的语言(基于现有的表)
当我设置Isoficial=True(该语言是该国家的官方语言)时,它会正确显示Isoficial=True的语言
即使删除以AND开头的行,is也会为ISOFICIAL显示所有带True或False的语言
但是,当我设置且Isoficial=False时,它根本不显示任何内容
为什么它不显示非官方语言?我想
isoficial
可能实际上是NULL
而不是false
。您可以尝试:
where not (isOfficial <=> true)
where not(等位真)
MySQL没有实际的布尔数据类型
在MySQL中,零被视为false,非零值被视为true。要使用布尔文字,请使用分别计算为1和0的常量TRUE和FALSE
检查Isoficial的数据库类型。如果您不满足条件Isoficial=false,那么Isoficial实际上不是零,这是另外一回事。Null值总是与false比较,因此如果Isoficial为Null,那么原始测试都不会返回该记录。