多个 where 语句返回不需要的结果

Multiple where statement returning undesired result

我正在尝试检索部门 10 和部门 30 中薪水大于 1500 的员工。这是我要 运行宁的声明。

select ename, sal
from emp
where deptno = 10
or deptno = 30
and sal > 1500;

它returns:

Name               Salary
---------- --------------
NAME1                1600
NAME2                2850
NAME3                2450
NAME4                5000
NAME5                1300

当我 运行 只有一个部门的查询没有 OR 时,它 returns NAME1 和 NAME2,当我 运行 它用于另一个部门时 returns姓名 3 和姓名 4。

我的问题是,是不是 OR 语句给我提供了不正确的 NAME5?对我来说,该查询应该有效,我尝试使用 AND 而不是 OR,但它没有给我任何结果。任何帮助将不胜感激。

AND 在 SQL WHERE 子句中优先于 OR,所以你拥有的等同于

where deptno = 10 or (deptno = 30 and sal > 1500)

尝试在 OR 两边加上括号,看看它是否能为您提供预期的结果。

where (deptno = 10 or deptno = 30) and sal > 1500

(此外,如果您在 SELECT 中包含部门编号,这样您就可以看到每一行来自哪个部门。)

你的问题是缺少括号。但实际上编写查询的最佳方式是使用 in:

select ename, sal
from emp
where deptno in (10, 30) and
      sal > 1500;