从两个表中选择而不使用OR

时间:2014-10-05 22:49:12

标签: sql

我有两个表:员工部门

雇员

name | salary | dNumber   
A    | 20000  | 1
B    | 25000  | 1
C    | 10000  | 5
D    | 10000  | 1

departmentName | departmentNumber
math           | 1
science        | 2

如何在不使用OR和amp;等布尔运算符的情况下从这两个表中进行选择和β

我想找到适合部门1或薪水超过20,000美元的员工。

我尝试了什么:

select name from employee

where salary>= 20000 from (where dNumber  in (select departmentNumber from department 
              where departmentNumber = 5));

这不起作用,因为:

ERROR: syntax error at or near "where"

2 个答案:

答案 0 :(得分:1)

这是你如何做到的:

select name from employee where where dnumber = 1
union
select name from employee where salary > 20000

基本上,union就像OR运算符一样工作,而交集就像AND运算符一样工作。

答案 1 :(得分:1)

如果要求不使用OR,则可以使用UNION。由于您根据其编号而不是名称来过滤部门,因此您根本不需要第二个表:

SELECT name FROM employee WHERE salary > 20000
    UNION
SELECT name FROM employee WHERE dNumber = 1

如果您想按名称过滤部门,则需要加入或子查询:

SELECT name FROM employee WHERE salary > 20000
    UNION
SELECT name FROM employee e
JOIN department d ON e.dNumber=d.departmentNumber
WHERE departmentName = 'math'