SQL问题:错误代码:1242。子查询返回多于1行

时间:2020-03-23 14:01:11

标签: sql join subquery

目标

我只想选择那些薪水高于HCL(公司雇员)的员工的详细信息。

Tables

我尝试过的方法:

SELECT Emp.emp_id, Emp.Emp_name, Department.dept_name, Emp.Salary, Company.company_name from emp 
 JOIN department ON(emp.emp_id=department.emp_id) 
  JOIN company ON(department.dept_id=company.dept_id) 
   where emp.salary > (SELECT Emp.Salary FROM emp where Company.company_name='HCL');

问题:

当我执行此查询时,它显示:错误代码:1242。子查询返回多于1行:

为消除上述错误,我已经尝试过:

SELECT Emp.emp_id, Emp.Emp_name, Department.dept_name, Emp.Salary, Company.company_name from emp 
     JOIN department ON(emp.emp_id=department.emp_id) 
      JOIN company ON(department.dept_id=company.dept_id) 
       where emp.salary > (SELECT Emp.Salary FROM emp where Company.company_name='HCL' LIMIT 1);

我知道,通过向查询提供 LIMIT 并不能提供所需的输出,但是会删除子查询返回的错误不止1行,当我执行此查询时,它会提供空白行和列在输出中。

因此任何人都可以帮助我在查询中缺少的地方和内容来选择所需的详细信息。

2 个答案:

答案 0 :(得分:1)

我认为您想要

{'if': {'column_id': '2020',"row_index": 8,
'filter_query': 'datafortable.at[8, '2020']  < datafortable.at[8, '2020'] - int(salary_budget2020 or 0)},'backgroundColor': '#3D9970','color': 'white'}

这将为您提供薪水高于HCL公司所有薪水的员工。

答案 1 :(得分:1)

company.company_name看起来不正确,但是某些数据库确实支持行中的嵌套记录结构。我认为您的数据库可以。

我建议您选择以下之一:

-- greater than the average
where emp.salary > (select avg(Emp.Salary)
                    from emp 
                    where Company.company_name = 'HCL'
                   );

-- greater than all
where emp.salary > (select max(Emp.Salary)
                    from emp 
                    where Company.company_name = 'HCL'
                   );

-- greater than any
where emp.salary > (select min(Emp.Salary)
                    from emp 
                    where Company.company_name = 'HCL'
                   );
相关问题