With Clause

20 min Niveau 7

Dans PostgreSQL, la requête WITH permet d'écrire des instructions auxiliaires à utiliser dans une requête plus importante. Elle permet de décomposer des requêtes complexes et volumineuses en formes plus simples, facilement lisibles. Ces instructions, souvent appelées Common Table Expressions ou CTE, peuvent être considérées comme définissant des tables temporaires qui n'existent que pour une seule requête.

La requête WITH étant une requête CTE, elle est particulièrement utile lorsque la sous-requête est exécutée plusieurs fois. Elle est également utile à la place des tables temporaires. Elle calcule l'agrégation une fois et nous permet de la référencer par son nom (qui peut être multiple) dans les requêtes.

La clause WITH doit être définie avant d'être utilisée dans la requête.

Syntaxe

La syntaxe de base de la requête WITH est la suivante :

WITH
    name_for_summary_data AS (
        SELECT Statement)
    SELECT columns
    FROM name_for_summary_data
    WHERE conditions <=> (
        SELECT column
        FROM name_for_summary_data)
    [ORDER BY columns]

name_for_summary_data est le nom donné à la clause WITH. Le name_for_summary_data peut être le même que celui d'une table existante et sera prioritaire. Vous pouvez utiliser des instructions modifiant les données (INSERT, UPDATE ou DELETE) dans WITH. Cela vous permet d'effectuer plusieurs opérations différentes dans la même requête.

Recursive WITH

logo discord

Besoin d'aide ?

Rejoignez notre communauté officielle et ne restez plus seul à bloquer sur un problème !

En savoir plus