我有2个表employee
和job_role
,如下所示。我需要编写一个SQL查询,通过加入此表来查找每个员工的名称。
输入表
员工
e_id e_name Salary
-----------------------
1 ABC 1000
2 CDE 2000
3 GHI 3500
4 JKL 5000
5 MNO 4000
6 XYZ 3000
Job_role
Designation Sal_min Sal_max
-------------------------------
Associate 1000 2000
Lead 2001 3000
Manager 3001 5000
问题:如果来自employee
表的薪水在sal_min
到sal_max
的范围内,请找到指定
期望的输出:
e_id e_name Salary Designation
-----------------------------------
1 ABC 1000 Associate
2 CDE 2000 Associate
3 GHI 3500 Manager
4 JKL 5000 Manager
5 MNO 4000 Manager
6 XYZ 3000 Lead
答案 0 :(得分:3)
ON
子句可以包含除=
之外的其他操作。在这里,您可以使用<=
和>=
(或BETWEEN
,如果您愿意的话)。
SELECT E.E_ID,
E.E_NAME,
JR.DESIGNATION
FROM EMPLOYEE E
LEFT JOIN JOB_ROLE JR
ON JR.SAL_MIN <= E.SALARY
AND JR.SAL_MAX >= E.SALARY;
(注意:我使用LEFT JOIN
表示有任何员工薪水不匹配的情况。我猜你宁愿用NULL
指定他们而不是所有。)