select dept_id,name,basic+bonus from salary inner join employees on salary.employee_id=employees.employee_id where dept_id=( select employee_id from employees where dept_id=( select dept_id from departments where dept_name='人事部' )) and year(date)=2018 and month(date)=12; ERROR 1242 (21000): Subquery returns more than 1 row
时间: 2024-04-22 08:23:24 浏览: 136
inner join的使用例子【之一】
在这个SQL语句中,出现了错误“Subquery returns more than 1 row”,它通常表示子查询返回了多行数据。在这个情况下,问题在于第一个子查询返回了多个employee_id值,而不是单个值,因此无法将其用作外部查询中的条件。
为了解决这个问题,可以考虑使用IN运算符而不是等号来比较子查询返回的值。下面是修正后的SQL语句:
```
select s.dept_id, e.name, s.basic+s.bonus
from salary s
inner join employees e on s.employee_id = e.employee_id
where s.dept_id IN (
select employee_id from employees where dept_id = (
select dept_id from departments where dept_name = '人事部'
)
) and year(s.date) = 2018 and month(s.date) = 12;
```
在这个修正后的SQL语句中,我们使用IN运算符来比较子查询返回的值。这样就能够正确地查询部门名称为“人事部”、时间为2018年12月份的员工的工资信息。
阅读全文