【问题标题】:Subquery which returns several columns返回多列的子查询
【发布时间】:2018-09-21 20:36:21
【问题描述】:

我有 2 个表如下:

我必须显示经理姓名列表和他/她的最大项目预算。这是我目前所拥有的:

SELECT emp.Name, proj.Budget
FROM EmployeeStatistics emp, Projects proj
WHERE (emp.EmployeeID, proj.Budget) IN (SELECT EmployeeIDNO, MAX(Budget)                                                                          
                                        FROM Projects                                                                             
                                        GROUP BY EmployeeIDNO)

但是当我尝试运行它时,我收到以下错误:

现在,如果我只运行子查询,结果是:

在我的主查询中,我只需要将名称和预算与子查询的结果相关联,但这是我无法弄清楚的

【问题讨论】:

  • Bad habits to kick : using old-style JOINs - 旧式 逗号分隔的表格列表 样式已替换为 ANSI 中的 proper ANSI JOIN 语法-92 SQL 标准(25 多年前),不鼓励使用它
  • 跳过 IN,改为加入子查询。

标签: sql ms-access subquery


【解决方案1】:

一个简单的JOIN 应该可以工作,不需要子查询。这是explicit join syntax

SELECT emp.Name, MAX(proj.Budget) as MaxBudget
FROM EmployeeStatistics emp
JOIN Projects proj on emp.EmployeeID = proj.EmployeeIDNO
GROUP BY emp.Name

如果您想包括没有预算的员工,请改用LEFT JOIN

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-09-26
    • 2016-08-24
    • 2010-12-18
    • 1970-01-01
    • 1970-01-01
    • 2014-02-15
    相关资源
    最近更新 更多