这是我的代码:
$query = mysql_query("SELECT P_Id, Thing,Something Date
FROM priv
WHERE Something = '$thing' AND thing2 <> 'This'
LIMIT 1"
) or die(mysql_error());
代码在没有 "thing2 <> 'this'"
的情况下工作正常语句,但是当我执行 "thing2 <> 'this'"
,它返回 0 个结果。好像表中没有空行,但表的 thing2 行中有空 ( NULL
) 行。
问题是,这个“不等于”语句不起作用,我已经尝试了所有方法,但它不会返回任何值。
编辑(解释词): 列看起来像这样 - P_Id |东西|日期 |东西 1 | Thing 2 和我需要从一行中接收 P_Id,其中 Something = Something AND Thing1 NOT EQLAS to 'this'(上例)并且 Thing2 ALSO NOT EQUALS to 'this'。我知道这听起来很疯狂。抱歉
好吧,所以我尝试了一些实验,结果发现“thing2 <>”东西在 things1/thing2 列上不起作用,但其他列,如“Something”表,其中也有“this”条目,它工作正常(找到没有“this”条目的最近行)。但是为什么这不适用于 things1 和 2???我试过重命名 things 列,但没有结果。
最佳答案
something <> NULL
will evaluate to NULL
.如果在与 0
几乎相同的查询中使用(或 false
)。
请记住,SQL 使用 three-valued logic而不是简单的二进制逻辑。
您可能需要使用 IS NULL
显式检查 NULL :
... OR THING IS NULL
或者您可以使用 NULL-safe equals operator <=>
否定(这是 MySQL 特定的,然而,it's not standard SQL):
... AND NOT (THING <=> 'This')
关于MySQL 不等于不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15501969/