【问题标题】:MySQL not and not equal operators fail, what gives?MySQL not 和 not equal 运算符失败,什么给出?
【发布时间】:2010-09-04 10:51:40
【问题描述】:

我有一个表 T,它有一个列 A。A 以默认值 NULL 开头。 40 行后,我将默认值更改为 1。三行的值为 2。我尝试选择 A 列不是 2 的所有行并将它们设置为新的默认值 1(当我没有自动发生改变了表格)。我第一次尝试:

update T set A=1 where A != 2;

纳达。没用。选择零行。接下来我尝试了:

update T set A=1 where !(A=2);

不,那里也没有。我尝试将它们插入选择中,以查看更新是否有问题,但那些也没有返回任何内容。 MySQL 参考手册说 != 和 !是有效的运算符,并且在该上下文中应该是完全有效的。我终于使用 IS NULL 实现了我的目标,但是这些语句应该有效。那么给了什么?为什么那行不通?

我正在运行 MySQL 版本:5.1.41-3ubuntu12.6 (Ubuntu)

【问题讨论】:

    标签: mysql not-operator


    【解决方案1】:

    试试:

    update T set A=1 where A != 2 or A is null; 
    

    涉及NULL 的比较评估为NULL(UNKNOWN),因此永远不会是真的。

    【讨论】:

    • 问题中提到我已经使用 IS NULL 实现了我的目标。意思是,我已经这样做了。但是感谢您提供有关 NULL 比较的信息!
    猜你喜欢
    • 2011-07-21
    • 2016-10-01
    • 2011-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-19
    • 1970-01-01
    • 2015-08-22
    相关资源
    最近更新 更多