Domanda

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

È stato utile?

Soluzione

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.

Altri suggerimenti

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top