Subquery
PostgreSQL 🟡 MidDéfinition
Requête imbriquée dans une autre requête, utilisable dans SELECT, FROM, WHERE ou HAVING. Peut être corrélée (référence la requête externe) ou non-corrélée (indépendante).
Analogie
Une question dans une question : 'Qui gagne plus que la moyenne des salaires ?'
Exemple de code
SELECT name FROM employees
WHERE salary > (
SELECT AVG(salary) FROM employees
);
-- Ou dans FROM
SELECT * FROM (
SELECT name, COUNT(*) as cnt
FROM orders GROUP BY name
) sub WHERE cnt > 5;
Cas d'usage
Filtrer sur un résultat agrégé ou créer des tables dérivées pour des requêtes complexes.
Anti-pattern
Termes liés
En entretien
Explique-moi la différence entre une sous-requête corrélée et une non-corrélée.
Une sous-requête corrélée référence la requête externe, alors qu'une non-corrélée est indépendante d'elle. L'exemple typique est 'qui gagne plus que la moyenne des salaires ?', une sous-requête non-corrélée dans le WHERE.
Quand éviter une sous-requête corrélée dans un SELECT ?
Quand un JOIN serait plus performant : une sous-requête corrélée dans le SELECT peut être ré-exécutée pour chaque ligne, ce qui coûte cher. Un JOIN classique est généralement mieux optimisé par le planneur.
Fiche mise à jour le 2026-09-27