Sql SELECT子句,然后更新数据

Sql SELECT子句,然后更新数据,sql,oracle,Sql,Oracle,表:员工和应用程序 //Employee NAME SALARY ----------------------- CHIRS 40000 JOHN 30000 MARY 20000 //Application NAME P# ----------------- CHIRS 0001 JOHN 0002 如上表所示,我们可以看到只有玛丽没有任何申请,所以玛丽的工

表:员工和应用程序

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

//Application
NAME          P#
-----------------
CHIRS        0001
JOHN         0002
如上表所示,我们可以看到只有玛丽没有任何申请,所以玛丽的工资将增加10%

以下查询:

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

我下面的问题是对的还是错的?谢谢你

你需要一个相关的子查询:

UPDATE FROM EMPLOYEE E
    SET E.SALARY = E.SALARY*1.10
    WHERE NOT EXISTS (SELECT 1 FROM APPLICATION A WHERE A.NAME = E.NAME);
如果没有相关性,子查询将始终返回2行。显然,它们是存在的,因此
where
子句总是失败的

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;

如果您只是为了自己的理解而尝试使用“Count”子句,那么查询的性能可能会提高,为什么只选择1?如果我有多个数据。它也能用吗?@user3553846。
notexists
子句只关心子查询是否返回行<代码>1既高效又不需要太多的输入。任何东西都可以到达那里,但我不喜欢使用
NULL
(在本例中有时可以看到)。至于多个条件,你可以把它们放在
where
子句中。你能帮我检查这个线程并提供帮助吗?谢谢