SQL缺少表达式

时间:2015-12-20 01:10:43

标签: sql oracle

对SQL很新。必须回答这个问题。我有2张桌子。 "员工"和"部门"

问题是。 "员工姓名,部门主管(HOD)以及薪水不在$ 5,000- $ 10,000范围内的所有员工的工资"

这就是我尝试过的。

select employee_name, hod, salary
from employees
where salary < 5000 and > 10000;

在&#39;&gt;&#39;&#39;&#39;&#39; 10000;

有什么想法吗?我需要加入部门吗?

2 个答案:

答案 0 :(得分:4)

您有语法错误,最后一行需要(每次都指定列名):

where salary < 5000 and salary > 10000;

但是,由于没有符合这些标准的价值,因此没有意义。您需要使用条件or

where salary < 5000 or salary > 10000

排除5000到10000之间的工资。

您也可以使用BETWEEN来实现相同的目标:

where salary not between 5000 and 10000

答案 1 :(得分:0)

WHERE条款中的每个条件都需要独立存在,对于您的第二个条件,它不知道哪个字段应该是> 10000,您必须指定:

select employee_name, hod, salary
from employees
where salary < 5000 
  and salary > 10000;

这将排除所有记录,因为它是每行比较,并且每条记录只能有一个salary值,所以您可能需要OR而不是AND,或者您可能在您的实际查询中包含不同的字段。

BETWEEN用于定义一系列数字/日期,但它是包容性的,WHERE salary BETWEEN 5000 and 10000将包含所有&gt; = 5000和&lt; = 10000,因此在这种情况下无用,并且有些人宁愿完全避免它,因为日期可能会很棘手。