为什么 MySQL 将 “TRUE or TRUE and FALSE” 评估为 true?
MySQL 将 “TRUE or TRUE and FALSE” 评估为 true,因为 AND 优先级高于 OR,即 AND 先于 OR 评估。
MySQL 如下评估以上语句。AND 运算符首先被评估 −
(TRUE or (TRUE AND FALSE))
语句 (TRUE AND FALSE) 返回 FALSE。然后第二个语句如下评估 −
(TRUE or FALSE)
以上语句返回 TRUE。
让我们逐个实现 −
mysql> select (TRUE AND FALSE); +------------------+ | (TRUE AND FALSE) | +------------------+ | 0 | +------------------+ 1 row in set (0.00 sec)
现在我们可以将以上结果放在 AND 条件中 −
mysql> select (TRUE or FALSE); +-----------------+ | (TRUE or FALSE) | +-----------------+ | 1 | +-----------------+ 1 row in set (0.00 sec)
现在再次检查整个条件 −
mysql> select (TRUE or TRUE and FALSE);
将产生以下输出 −
+--------------------------+ | (TRUE or TRUE and FALSE) | +--------------------------+ | 1 | +--------------------------+ 1 row in set (0.00 sec)
广告