多个 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;
我正在尝试检索部门 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;