sql - SQL AND OR 运算符
问题描述
为什么下面的查询只带来deptno = 10
?
为什么不带行job IN ('MANAGER','SALESMAN') and deptno = 30
结果?
select *
from emp
where deptno=10
and ((job IN ('MANAGER','SALESMAN') and deptno = 30) or (1=1));
解决方案
(1=1)
总是TRUE
。
因此,任何与该条件相结合的条件/布尔表达式OR
,例如:
(job IN ('MANAGER','SALESMAN') and deptno = 30) or (1=1)
也将永远TRUE
。
这使您的WHERE
子句等效于:
where deptno=10 and TRUE
更简单:
where deptno=10
如果您想要表deptno=10
的行和deptno=30
仅当的行,job IN ('MANAGER','SALESMAN')
那么您应该具有:
where deptno=10 or ((job IN ('MANAGER','SALESMAN') and deptno = 30)
推荐阅读
- onload - 为什么在 window.onload 之后项目继续加载?
- java - 从构建的 JRT 模块运行应用程序时,从 URL 构造的 JavaFX 11 javafx.scene.image 抛出 SSLHandshakeException
- javascript - 更改 jqgrid 子网格标题栏上的背景颜色,但所有标题栏都在更改颜色
- trading - 获取其他时间范围的指标值
- python - 如何为二维数组类(python)修改 __getitems__?
- angular - Angular ng2-charts x 轴标签格式
- accessibility - 了解 WCAG 调整文本大小 1.4.4
- magento2 - 如何阻止在 Magento 2 的数量中输入十进制值?
- javascript - 循环使用 Json 以使用 JavaScript 查找元素
- windows - 给定进程的 %Processor Time 的 PerfMon 模板