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

SQL问题:错误代码:1242。子查询返回超过1行,sql,join,subquery,Sql,Join,Subquery,目标 我只想选择工资高于公司员工的员工的详细信息 我所尝试的: 问题: 当我执行这个查询时,它显示:错误代码:1242。子查询返回多行: 为了消除上述错误,我已尝试: 我知道,通过对查询提供限制,它不会提供所需的输出,但它会删除子查询返回的行错误超过1个,当我执行此查询时,它会在输出处提供空白行和列 因此,任何人都可以帮助我在查询中选择所需的细节 我想你想要: select e.emp_id, e.emp_name, d.dept_name, e.sala

目标

我只想选择工资高于公司员工的员工的详细信息

我所尝试的:

问题:

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

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

我知道,通过对查询提供限制,它不会提供所需的输出,但它会删除子查询返回的行错误超过1个,当我执行此查询时,它会在输出处提供空白行和列

因此,任何人都可以帮助我在查询中选择所需的细节

我想你想要:

select 
    e.emp_id, 
    e.emp_name, 
    d.dept_name, 
    e.salary, 
    c.company_name 
from emp e
inner join department d on e.emp_id = d.emp_id
inner join company c on d.dept_id = c.dept_id
where e.salary > (
    select max(e1.salary)
    from emp e1 
    inner join company c1 on c1.dept_id = e1.dept_id
    where c1.company_name = 'HCL'
);
这将为您提供高于HCL公司所有工资的员工。

我认为您需要:

select 
    e.emp_id, 
    e.emp_name, 
    d.dept_name, 
    e.salary, 
    c.company_name 
from emp e
inner join department d on e.emp_id = d.emp_id
inner join company c on d.dept_id = c.dept_id
where e.salary > (
    select max(e1.salary)
    from emp e1 
    inner join company c1 on c1.dept_id = e1.dept_id
    where c1.company_name = 'HCL'
);
这将为您提供薪资高于公司HCL所有薪资的员工。

company.company\u名称看起来不正确,但某些数据库支持行中嵌套的记录结构。我想你的数据库是这样的

我建议您选择以下选项之一:

-- 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'
                   );
company.company\u名称看起来不正确,但某些数据库确实支持行中的嵌套记录结构。我想你的数据库是这样的

我建议您选择以下选项之一:

-- 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'
                   );

HCL是否只有一名员工?company.company_名称似乎没有定义。最好将样本数据显示为。有关如何创建美观的表的一些提示,请参阅。HCL是否只有一名员工?company.company\u名称似乎未定义。最好将示例数据显示为。有关如何创建美观的桌子的一些提示,请参见。先生,您回答了我的问题,我感到非常自豪。我从你之前关于stockoverflow的回答中学到了很多东西,但这个答案也在输出中提供了空白行和空白列。@GMB的上述回答帮助了meSir,你回答了我的问题,我感到非常自豪。我从你以前关于股票溢出的回答中学到了很多,但这个答案也在输出中提供了空白行和列。@GMB的上述回答帮助我,其中e.salary>选择maxe1.salary from emp e1内部加入公司c1 on c1.dept_id=e1.emp_id其中c1.company_name='HCL';我正在使用连接,您更正了:查询中的内部连接是changes@AjStyles:内部联接和联接只是同义词,没有问题。其中e.salary>在c1.dept_id=e1.emp_id中从emp e1内部联接公司c1选择maxe1.salary,其中c1.company_name='HCL';我正在使用连接,您更正了:查询中的内部连接是changes@AjStyles:内部连接和连接只是同义词,没有问题。