繁体   English   中英

MySQL不等于不工作

[英]MySQL not equals to isn't working

这是我的代码:

$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 为“this”(上例),Thing2 也不等于“this”。我知道这听起来很疯狂。对不起

好的,所以我尝试了一些实验,结果表明“thing2 <>”thingy 不适用于things1/thing2 列,但其他列如“Something”表中的“this”条目也可以正常工作(找到最靠近的行没有“这个”条目的地方)。但是为什么这不适用于things1 和2?我尝试重命名things 列,但没有结果。

something <> NULL将评估为NULL 如果在查询中使用,则与0 (或false )几乎相同。

请记住,SQL 使用三值逻辑而不是简单的二进制逻辑。

您可能需要使用IS NULL显式检查IS NULL

... OR THING IS NULL

或者,您可以使用带有否定的NULL 安全等于运算符<=> (这是 MySQL 特定的,但是, 它不是标准 SQL ):

... AND NOT (THING <=> 'This')

我接受@JoachimSauer 的方式。 另外,我也更喜欢尝试以下一种。

... WHERE Something = '$thing' AND NOT (IFNULL(thing2,'') = 'This')
LIMIT 1```

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM