我有两个表:员工和部门
雇员
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"
答案 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'