单行子查询 returns 在 HR 模式中的 oracle 中多于一行

single-row subquery returns more than one row in oracle in HR schema

select employee_id, first_name, job_id, salary 
from employees where salary < ( select SALARY 
                                FROM EMPLOYEES 
                                WHERE JOB_ID='IT_PROG');

我发现了如下错误:

ORA-01427: single-row subquery returns more than one row

看起来有“很多”员工job_id = 'IT_PROG'。在这种情况下,子查询 return 的“多行”和您的查询会导致错误。

这取决于你想在这种情况下做什么;例如,对于工资低于 IT_PROG 的最低工资的员工,您可能想要 return 行,因此将是

SELECT employee_id,
       first_name,
       job_id,
       salary
  FROM employees
 WHERE salary < (SELECT MIN (SALARY)               --> note MIN function here
                   FROM EMPLOYEES
                  WHERE JOB_ID = 'IT_PROG');