对此感到困惑。
在两台服务器上运行相同版本的MySQL。 (从完全相同的rpm构建) - 某些开发人员改变某些东西......
服务器1:
mysql> select ( not 1 = 2 );
0
1 row in set (0.00 sec)
服务器2:
mysql> select ( not 1 = 2 );
1
1 row in set (0.00 sec)
两台服务器:
mysql> sHOW VARIABLES LIKE 'version';
| version | 5.6.12 |
答案 0 :(得分:2)
您应该检查HIGH_NOT_PRECEDENCE
运营商。
官方文件指出:
NOT运算符的优先级使得诸如NOT a BETWEEN b AND c之类的表达式被解析为NOT(BETWEEN b AND c)。在某些旧版本的MySQL中,表达式被解析为(不是)BETWEEN b和c。通过启用HIGH_NOT_PRECEDENCE SQL模式可以获得旧的高优先级行为。
小提琴测试此行为here。
顺便说一句,我建议您比较x != y
而不是使用not (x = y)
。