Nou, het gaat er niet om of je het zou kunnen of niet. Het gaat erom of je het moet doen of niet. In uw zoekopdracht zie ik geen filtercriteria. Wilt u alle rijen bijwerken? Ik zie geen behoefte aan CTE in jouw geval.
Wanneer heb je een CTE nodig? , d.w.z. een with-clausule als factoringmethode voor subquery's wanneer u een scenario hebt waarin de subquery meerdere keren wordt uitgevoerd. U gebruikt een WITH-component om ervoor te zorgen dat de subquery één keer wordt uitgevoerd en dat de resultatenset wordt opgeslagen als een tijdelijke tabel.
Ja, je zou MET . kunnen gebruiken clausule voor een UPDATE uitspraak.
Bijvoorbeeld,
UPDATE TABLE t
SET t.column1, t.column2 = (SELECT column1, column2 FROM
(
WITH cte AS(
SELECT ... FROM another_table
)
SELECT * FROM cte
)
Je zou een MERGE . kunnen gebruiken verklaring GEBRUIK de MET clausule.
Bijvoorbeeld,
SQL> MERGE INTO emp e USING
2 (WITH average AS
3 (SELECT deptno, AVG(sal) avg_sal FROM emp group by deptno)
4 SELECT * FROM average
5 ) u
6 ON (e.deptno = u.deptno)
7 WHEN MATCHED THEN
8 UPDATE SET e.sal =
9 CASE
10 WHEN e.sal <= u.avg_sal
11 THEN e.sal * 1.05
12 ELSE e.sal * 1.03
13 END
14 /
14 rows merged.
SQL>