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
子句中。你能帮我检查这个线程并提供帮助吗?谢谢