La pratique conventionnelle nécessite souvent de combiner plusieurs expressions de table communes (CTE) pour réaliser des tâches complexes de récupération de données. Cependant, des doutes subsistent quant à la faisabilité de combiner plusieurs CTE dans une seule requête SQL.
En effet, il est tout à fait réalisable de combiner plusieurs CTE au sein d'une seule requête SQL. La syntaxe nécessite l'utilisation du mot-clé WITH une seule fois, positionné en début de requête. Même lorsqu'il s'agit d'un mélange de CTE récursifs et non récursifs, le mot-clé RECURSIVE ne doit être inclus qu'une seule fois en haut.
Par exemple :
WITH RECURSIVE cte1 AS (...) -- non-recursive , cte2 AS (SELECT ... UNION ALL SELECT ...) -- recursive , cte3 AS (...) SELECT ... FROM cte3 WHERE ...
Il est à noter que l'ordre des clauses CTE n'ont plus d'importance lorsque le mot-clé RECURSIVE est présent. Conformément au manuel SQL, il permet aux requêtes CTE de faire des références à d'autres CTE quel que soit leur ordre dans la clause WITH.
De plus, les CTE non récursifs qui ne sont pas référencés dans l'instruction SELECT finale et n'ont pas aucun effet collatéral ne sera exécuté.
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!