gpt4 book ai didi

sql-server-2008 - 在 SQL Server 2008 中使用子查询理解内部连接

转载 作者:行者123 更新时间:2023-12-04 07:07:19 24 4
gpt4 key购买 nike

我有 2 个表,名为“table123”和“table246”。

table123”列:“ID”、“Dept_ID”、“First_Name”、“< em>姓氏', '薪水', '地址'.

table246”列:“Dept_ID”、“Dept_Name”。

我想找到每个“Dept_Name”的平均工资。所以我尝试使用下面的查询,这是一个带有子查询的 Equi-Join:

SELECT Dept_Name, alt.Average_Salary AS Avg_Salary
FROM table123 a, table246 b,
(SELECT Dept_ID, AVG(Salary)Avg_Salary
FROM table123
GROUP BY Dept_ID)alt
WHERE a.Dept_ID = alt.Dept_ID
AND a.Salary = alt.Average_Salary
AND a.Dept_ID = b.Dept_ID;

但是,当我运行上述查询时,它给出了所需的 2 个列名称“Dept_Name”和“Avg_Salary”,但其中没有任何数据(只是一个空白表格)。

我在代码中做错了什么,导致了这个空白的结果表?

此外,是否有另一种方法可以使用内部连接来获得相同的结果? Equi-Join 非常困惑。

最佳答案

永远不要FROM 子句中使用逗号。 始终使用正确、明确的 JOIN 语法。

您的查询未返回结果,因为没有人完全 平均值,因此薪水条件失败。根据您的选择,子查询是您想要的查询:

SELECT Dept_ID, AVG(Salary) as Avg_Salary
FROM table123
GROUP BY Dept_ID;

据推测,另一个表引入了名称,所以:

SELECT b.Dept_Name, AVG(a.Salary) as Avg_Salary
FROM table123 a JOIN
table246 b
ON a.Dept_ID = b.Dept_Id
GROUP BY b.Dept_Name;

关于sql-server-2008 - 在 SQL Server 2008 中使用子查询理解内部连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42998827/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com