1

我有一个表 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)

4

1 回答 1

3

尝试:

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

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

于 2010-09-04T10:53:16.297 回答