当前位置: 首页 > 知识库问答 >
问题:

使用聚合时,子查询返回超过1行

徐焱
2023-03-14

子查询返回超过1行??

SELECT
    `employee`.`employee_id` AS `employee_id`,
    (
    SELECT
        SUM(company.company_profit_left)
    FROM
        company
    GROUP BY
        company.employee_id,
        company.employee_department
) AS profit_left
FROM
    employee
LEFT JOIN `company` ON `company`.`employee_id` = `employee`.`employee_id`
GROUP BY
    `employee`.`employee_id`
HAVING
    SUM(
        company.company_profit_left
    ) = 0
╔════╦══════════════╦════════════╦════════════╦
║ id ║ user_id      ║ profit left║ department ║
╠════╬══════════════╬════════════╬════════════╬
║  1 ║ 1            ║  100       ║    1       ║ 
║  2 ║ 2            ║   50       ║    1       ║ 
║  3 ║ 1            ║   30       ║    2       ║ 
║  4 ║ 2            ║   20       ║    1       ║
║  5 ║ 2            ║   20       ║    3       ║
╚════╩══════════════╩════════════╩════════════╩

下表是我想要达到的目标

╦══════════════╦══════════════╦
║ user_id      ║ profit left  ║ 
╠══════════════╬══════════════╬
║ 1            ║    100       ║  
║ 1            ║    30        ║  
║ 2            ║     70       ║  
║ 2            ║     20       ║  
╚══════════════╩══════════════╩

这就是为什么我认为我需要使用group by来区分user_id

我已经看过了

子查询返回超过1行-MySQL

子查询返回的行数是否超过1行?

但还是不明白。

通过连接两个不同的表,我得到了下表。

谁能帮我解决这个问题?

共有1个答案

段志
2023-03-14

编辑:根据表结构和所需的输出,我更新了查询并删除了不需要的whereleft join

我不知道你想干什么。但根据我的理解,我纠正了你的质疑:

SELECT
    employee.employee_id AS employee_id,
    profit_left.employee_department
    profit_left.company_profit
FROM
employee
JOIN (
    SELECT
        company.employee_id,
        company.employee_department,
        SUM(company.company_profit_left) as company_profit
    FROM company
    GROUP BY company.employee_id,company.employee_department
) AS profit_left on employee.employee_id=profit_left.employee_id
 类似资料:
  • 我不知道当我在Mysql中运行查询时,会出现此错误。 #1242-子查询返回超过1行 谁能帮我解决这个问题?

  • 当“事件ID”与“用户ID”匹配时,im会尝试从我的“事件”表中选择所有数据。然而,我得到一个错误1242,子查询返回超过1行。 我理解我的子查询将返回多行,因为一个用户可以参加多个事件。那么我如何使我的查询接受多行呢?

  • 问题内容: 您好,我有查询,其中我已使用select语句编写了更新语句。但是不幸的是,子查询返回错误会返回1行以上的错误。我知道错误即将到来。但我不知道相同的解决方案。谢谢。这是查询: 问题答案: 当您对子查询使用update时,必须返回不超过一个值(一行)。如果返回多个值,如何将两行表分配给标量字段。因此,您应该弄清楚为什么子查询返回多于一行的内容,并修复该子查询,或者确定多于一行的情况下选择哪

  • 我试图从一个MySQL数据库中创建一个select语句来选择id用户(雇员或领导或经理)和全名。根据id部门,id优先级。代码是:

  • 我有以下JPA实体(getter、setter和非相关字段省略): 我的目标是使用JPQL或criteriaAPI实现查询,它将返回每天的平均事务量和最大事务量。 产生预期结果的原生SQL查询(MySQL数据库)如下所示: 遗憾的是,不鼓励使用本机 SQL 查询,并且 JPQL 不允许在 where 子句中使用子查询。 提前谢谢你。 附加: 我从以下Spring数据查询开始: 但显然没有用: 我可

  • 问题内容: 我想要做的是计算子查询返回的行数,本质上如下: 这是我的错误信息: 为什么这不起作用?如果select仅返回一堆具有过滤条件的行,为什么我不能计算行数或返回的行数? 我正在计算拥有的不同员工的数量。按分组。 这是有关我的数据库的一些结构信息,作为查询的一部分。 谢谢! 问题答案: 试试这个 或这个