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