문제

Table : Employee AND Application

//Employee
NAME            SALARY
-----------------------
CHIRS           40000
JOHN            30000
MARY            20000

//Application
NAME          P#
-----------------
CHIRS        0001
JOHN         0002

As the table above, we can see that only MARY don't have any application, so salary of MARY will be increase 10%

Following query:

UPDATE FROM EMPLOYEE E SET E.SALARY = E.SALARY*1.10
WHERE NOT EXISTS (SELECT NAME FROM APPLICATION);

isn't my following query correct or wrong? thanks you

도움이 되었습니까?

해결책

You need a correlated subquery:

UPDATE FROM EMPLOYEE E
    SET E.SALARY = E.SALARY*1.10
    WHERE NOT EXISTS (SELECT 1 FROM APPLICATION A WHERE A.NAME = E.NAME);

Without the correlation, the subquery would always return 2 rows. Clearly, these exist, so the where clause always fails.

다른 팁

UPDATE FROM EMPLOYEE E
SET E.SALARY = E.SALARY*1.10
WHERE (SELECT COUNT(A.Name) FROM APPLICATION A WHERE A.NAME = E.NAME) = 0;

The performance of your query could improve if you try to use a "Count" clause

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top