2
我有两个表,名为'表123'和'表246'。SQL中的Equi-Join和Inner-Join之间的区别
'table123' 列: 'ID', 'DEPT_ID', '将First_Name', '姓', '工资', '地址'。
'table246' 列: 'DEPT_ID', 'DEPT_NAME'。
我想查找每个部门薪水最低的员工名单。我能做到的两种方法是Equi-Join或Inner-Join。我被告知他们都可以用来提供所需的结果。
的查询我使用:
同等联接:
SELECT First_Name, b.Dept_Name, alt.Min_Salary AS Min_Salary
FROM table123 a, table246 b,
(SELECT Dept_ID, MIN(Salary)Min_Salary
FROM table123
GROUP BY Dept_ID)alt
WHERE a.Dept_ID = b.Dept_ID
AND a.salary = alt.Min_Salary
AND a.Dept_ID = alt.Dept_ID;
内加入:
SELECT MIN(Salary)Min_Salary, Dept_Name
FROM table123 a, table246 b
INNER JOIN (SELECT First_Name, MIN(Salary)
FROM table123
GROUP BY Dept_ID)alt
ON b.Dept_ID = alt.Dept_ID;
同等联接语句给我所需的表,包含列'First_Name','Dept_Name'&'Min_Salary',与所有相关虚拟数据。
但是,Inner-Join语句不运行,因为First_Name列需要包含在聚合函数或GROUP BY子句中。这让我很困惑,因为我不知道如何去解决它。如何调整Inner-Join查询,以便提供与Equi-Join查询相同的结果?
我的错,我没有正确输入。查询运行,但它从一个表中取回所有记录。我只想要每个Dept_Name的最低工资,所以应该只有6行。 – CrashBandicoot
在我的回答中尝试新的查询 – MayowaO
好的,第二个查询可以正常工作,但不包括薪水最低的员工的First_Name。这是我在开始时遇到的问题。 – CrashBandicoot