반응형
저는 SQL을 처음 접했고 쿼리에 갇혀 있습니다.
직원, 부서 및 급여가 3 개 있습니다. 이 조건을 지정하여 salary_paid 테이블의 보너스 열을 업데이트하려고합니다.
give 10% bonus on total salary to the employees who are not in IT departments.
나는이 쿼리를 생각 해냈다
update salary_paid
set bonus=(select (0.1*total_salary) "Bonus"
from salary_paid, departments, employees
where
employees.department_id=departments.department_id and
employees.employee_id=salary_paid.employee_id and
departments.department_name!='IT')
;
그러나이 오류를 반환합니다.
ORA-01427 : 단일 행 부질의는 둘 이상의 행을 반환합니다
나는 이것에 대해 완전히 단서가 없습니다. 도와주세요. 미리 감사드립니다
해결 방법
내부 쿼리 (select (0.1 * total_salary) salary_paid에서 "Bonus"
가 둘 이상의 값을 반환하므로 bounus 열에 할당 할 수 없습니다.
대신 이와 같은 조인을 사용하여 업데이트하십시오.
UPDATE
(SELECT salary_paid.bonus as oldBonus, 0.1*salary_paid.total_salary as newBounus
FROM salary_paid
INNER JOIN employees
ON salary_paid.employee_id = employees.employee_id
INNER JOIN departments
ON departments.department_id = employees.department_id
WHERE departments.department_name != 'IT'
) t
SET t.oldBonus= t.newBounus
참조 페이지 https://stackoverflow.com/questions/22602787
반응형
'MySql' 카테고리의 다른 글
MySQL AWS RDS 엔드 포인트를 ping 할 수 없습니다. (0) | 2020.12.08 |
---|---|
MySQL PHP에서 URL 매개 변수를 사용하는 MySQL 쿼리 (0) | 2020.12.08 |
MySQL + JAVA 예외 : 결과 집합 시작 전 (0) | 2020.12.08 |
MySQL 타임 스탬프 필드의 날짜 부분별로 그룹화 (0) | 2020.12.08 |
MySQL 다른 PHP 페이지에서 동일한 MySQL 연결 사용 (0) | 2020.12.08 |
댓글