MySQL 不等于不工作

标签 mysql

这是我的代码:

$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/

相关文章:

sql - 无法在 5.1.32 上创建具有 TRIGGER 权限的 MySQL 触发器

mysql - 跨多个表对 group by 进行计数

php - 如何使用 JSON 将 select 语句结果(MySQL)从 php 发送到 android?

mysql - 从表中删除行,除了指定数量(限制行数)

php - 无需回发自动从服务器向客户端发送警报消息

php - 了解Mysql 'on duplicate key'

mysql - Solr文档更新

mysql - WHERE 子句中条件的顺序会影响 MySQL 性能吗?

Mysql ERROR 1064 (42000),数据库转储仅创建了一半的表

mysql - 选择特定日期有空的老师