Dans Oracle, l'instruction "with as" équivaut à créer une table temporaire et à placer les résultats intermédiaires dans une instruction dans l'espace table temporaire. Vous pouvez également utiliser cette instruction pour définir plusieurs tables temporaires. La syntaxe est "with temptablename". ([liste de champs]) comme (sélectionner ...)".
L'environnement d'exploitation de ce tutoriel : système Windows 10, version Oracle 11g, ordinateur Dell G3.
La clause with as dans la requête Oracle équivaut à créer une table temporaire et à placer des résultats intermédiaires dans une instruction dans l'espace table temporaire. Nommez la sous-requête dans la requête et placez-la au début de l'instruction SELECT. La syntaxe est la suivante :
with temptablename([字段列表]) as (select ...) select ...
Vous pouvez également utiliser la clause with as pour définir plusieurs tables temporaires. Lors de la création de plusieurs tables temporaires, les tables temporaires suivantes peuvent accéder aux tables temporaires précédemment construites. La syntaxe est la suivante :
with temptablename1([字段列表]) as (select ...), temptablename2([字段列表]) as (select ...) select ...
Description :
(1) La table temporaire créée à l'aide de la clause with as sera éliminée une fois la requête de récupération terminée.
(2) Lors de la création de plusieurs tables temporaires, ces dernières peuvent accéder aux tables temporaires qui ont été construites précédemment.
(3) Lorsqu'une requête comporte plusieurs sous-requêtes identiques, la clause with as est généralement utilisée, car les résultats de la sous-requête sont stockés dans la table temporaire de la mémoire et l'efficacité d'exécution est élevée.
Exemple d'utilisation
Requérez quels départements ont un salaire total supérieur au salaire moyen de tous les départements :
1 Sans as
Le code et les résultats de la requête sont les suivants :
SELECT deptno,total_sal FROM (SELECT deptno,sum(sal) as total_sal FROM employee GROUP BY deptno) temp1 WHERE total_sal>( SELECT avg(total_sal) FROM (SELECT deptno,sum(sal) as total_sal FROM employee GROUP BY deptno) 10:46:44 10 ); DEPTNO TOTAL_SAL ---------- ---------- 20 5701632000 Elapsed: 00:00:02.33
Dans cet exemple, il apparaît. dans une requête Deux sous-requêtes identiques.
2. Utiliser with as
10:45:47 SQL> WITH tempA AS (SELECT deptno,sum(sal) as total_sal FROM employee GROUP BY deptno) SELECT * FROM tempA WHERE total_sal>( SELECT AVG(total_sal) FROM tempA 10:46:02 10 ); DEPTNO TOTAL_SAL ---------- ---------- 20 5701632000 Elapsed: 00:00:01.42
La comparaison des deux requêtes montre que l'utilisation de la clause with as peut simplifier l'instruction de requête et améliorer la vitesse de la requête.
Tutoriel recommandé : "Tutoriel vidéo Oracle"
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!