Traitez la table comme une variable pour implémenter l'appel récursif et le parcours de niveau

Dans l'article précédent, nous avons expliqué comment utiliser les opérateurs d'ensemble SQL (UNION [ALL], INTERSECT et EXCEPT) pour combiner plusieurs résultats de requête en un seul résultat.

Ensuite, nous introduisons une fonctionnalité très puissante dans SQL: Common Table Expression (Common Table Expression).

Tableau comme variable

Dans les langages de programmation, les variables et les fonctions (méthodes) sont généralement définies; les variables peuvent être réutilisées et les fonctions (méthodes) peuvent modulariser le code et améliorer la lisibilité et la maintenabilité du programme.

De même, les expressions de table générales dans SQL peuvent réaliser la réutilisation des résultats de requête, simplifier les requêtes de jointure complexes et les sous-requêtes; et peuvent terminer le traitement récursif des données et le parcours hiérarchique .

Voici un exemple de la partie 17, utilisant une sous-requête pour renvoyer le salaire mensuel moyen de chaque département:

SELECT d.dept_name AS "部门名称",
       ds.avg_salary AS "平均月薪"
  FROM department d
  LEFT JOIN (SELECT dept_id,
                    AVG(salary) AS avg_salary
               FROM employee
              GROUP BY dept_id) ds
    ON (d.dept_id = ds.dept_id);

Parmi eux, le résultat ds de la sous-requête équivaut à une table temporaire. Le résultat de cette requête est le suivant:

avec

Nous pouvons utiliser une expression de table générale pour réécrire l'exemple comme suit:

WITH ds(dept_id, avg_salary) AS 

Je suppose que tu aimes

Origine blog.csdn.net/horses/article/details/108729097
conseillé
Classement