AND优先级高于OR,混用时需用括号明确逻辑顺序,避免默认优先级导致错误结果。

在MySQL里把
OR
AND
AND
OR
OR
AND
OR
当你尝试在MySQL的
WHERE
AND
OR
AND
OR
条件A AND 条件B OR 条件C
(条件A AND 条件B) OR 条件C
AND
OR
但很多时候,这并不是我们想要的逻辑。比如,你可能想表达的是‘满足条件A,并且(满足条件B或者满足条件C)’。这时候,你就需要请出我们的‘救星’——括号。括号的作用,就是强制改变运算的优先级,让它按照你的意图来。把你想先执行的
OR
让我们看几个具体的例子:
-- 示例1:AND 优先级高于 OR 的默认行为 -- 假设我们想查找部门ID是1001,并且职位是'工程师' 的员工, -- 或者 查找部门ID是1002的员工。 -- 实际执行逻辑是:(dept_id = 1001 AND job_title = '工程师') OR dept_id = 1002 SELECT * FROM employees WHERE dept_id = 1001 AND job_title = '工程师' OR dept_id = 1002; -- 示例2:使用括号明确 OR 优先 -- 假设我们想查找部门ID是1001,并且 (职位是'工程师' 或者 职位是'设计师') 的员工。 -- 这里的括号强制让 OR 先执行 SELECT * FROM employees WHERE dept_id = 1001 AND (job_title = '工程师' OR job_title = '设计师'); -- 示例3:使用括号明确 AND 优先 (与默认行为等效,但更清晰) -- 假设我们想查找 (部门ID是1001并且职位是'工程师') 或者 部门ID是1002 的员工。 -- 即使默认就是这样,加括号也能让意图更明确 SELECT * FROM employees WHERE (dept_id = 1001 AND job_title = '工程师') OR dept_id = 1002;
通过这些例子,你应该能清楚地看到,括号是你在
AND
OR
理解逻辑运算符的优先级,尤其是在
AND
OR
想想看,如果一个电商网站的促销活动,因为
WHERE product_type = '电子产品' AND price < 100 OR is_new_arrival = TRUE
所以,我的建议是,即使你觉得
AND
AND
OR
除了我们常挂在嘴边的
AND
OR
NOT
XOR
NOT
AND
NOT condition
NOT A AND B
NOT A
B
AND
NOT (A AND B)
A
-- NOT 的高优先级示例 -- 查找不是部门1001的员工,并且职位是'工程师' -- 实际执行:(NOT dept_id = 1001) AND job_title = '工程师' SELECT * FROM employees WHERE NOT dept_id = 1001 AND job_title = '工程师'; -- 使用括号改变 NOT 的作用范围 -- 查找不满足 (部门1001 并且 职位是'工程师') 的员工 SELECT * FROM employees WHERE NOT (dept_id = 1001 AND job_title = '工程师');
XOR
XOR
AND
OR
AND
OR
-- XOR 示例 -- 查找部门是1001 或 职位是'工程师',但不能同时满足的员工 SELECT * FROM employees WHERE dept_id = 1001 XOR job_title = '工程师';
总的来说,优先级从高到低大致是:
NOT
AND
XOR
OR
NOT
写SQL,尤其是
WHERE
括号是你的好朋友: 这一点前面已经强调过无数次了,但还是要说。只要有
AND
OR
保持简洁,必要时拆分: 如果你的
WHERE
WHERE
命名规范,避免歧义: 这虽然不是直接关于逻辑组合的,但一个清晰的列名和值能大大降低理解
WHERE
WHERE c1 = 1 AND c2 = 0 OR c3 = 'A'
WHERE is_active = TRUE AND status = 'PENDING' OR is_admin = TRUE
别害怕注释: 对于那些确实非常复杂,或者包含一些业务特有逻辑的
WHERE
充分测试,别想当然: 写完复杂的
WHERE
以上就是mysql中or和and逻辑运算如何组合的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号