Sous-requêtes scalaires, de lignes et de tables
Utilisez des sous-requêtes qui renvoient une seule valeur, une seule ligne ou une table complète et placez-les dans les clauses SELECT, FROM et WHERE.
Sous-requêtes scalaires, de lignes et de tables est une leçon SQL Academy gratuite sur CoddyKit. Ceci est la leçon 1 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage SQL Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours SQL Academy comprend 4 leçons au total.
Qu’est-ce qu’une sous-requête ?
Une sous-requête est un SELECT placé à l’intérieur d’une autre instruction SQL. Elle peut être :
- Une sous-requête scalaire — renvoie une seule valeur
- Une sous-requête de ligne — renvoie une seule ligne
- Une sous-requête de table — renvoie une relation (utilisée dans FROM)
Sous-requête scalaire
Utilisée partout où une seule valeur est attendue :
SELECT id, total,
total - (SELECT AVG(total) FROM orders) AS diff_from_avg
FROM orders
WHERE created_at >= NOW() - INTERVAL '30 days';Sous-requête de ligne
Renvoie une ligne comportant plusieurs colonnes. Moins courante, elle est surtout utilisée avec des constructeurs de lignes :
SELECT *
FROM orders
WHERE (status, country) = (
SELECT status, country FROM orders WHERE id = 1
);Sous-requête de table dans FROM
Traitez le résultat d’une requête comme une table temporaire :
SELECT country, AVG(big_order_total) AS avg_big
FROM (
SELECT country, total AS big_order_total
FROM orders
WHERE total > 1000
) AS sub
GROUP BY country;Alias des sous-requêtes dans FROM
Toute sous-requête dans FROM nécessite un alias dans PostgreSQL, même si vous ne l’utilisez pas :
SELECT * FROM (SELECT 1) sub; -- "sub" requiredSous-requêtes dans WHERE
Filtrez à partir d’un ensemble de valeurs dérivé :
SELECT * FROM users
WHERE id IN (
SELECT user_id FROM orders WHERE total > 100
);EXISTS / NOT EXISTS
Vérifiez si une sous-requête renvoie au moins une ligne :
SELECT * FROM users u
WHERE EXISTS (
SELECT 1 FROM orders o WHERE o.user_id = u.id
);Sous-requêtes dans SELECT
Intégrez une sous-requête scalaire calculée pour chaque ligne :
SELECT id, full_name,
(SELECT COUNT(*) FROM orders o WHERE o.user_id = u.id) AS order_count
FROM users u;
-- Often readable, but a LEFT JOIN + GROUP BY is usually faster.Sous-requêtes comme expressions
Une sous-requête scalaire qui renvoie plusieurs lignes provoque une erreur :
SELECT (SELECT email FROM users);
-- ERROR: more than one row returned by a subquery used as an expressionQuand remplacer une sous-requête par JOIN
De nombreux cas de type « x IN (SELECT...) » peuvent être réécrits avec JOIN. Choisissez la forme la plus claire à la lecture ; les planificateurs modernes produisent souvent le même plan.
Sous-requêtes ou CTE
Si vous avez besoin de la même sous-requête deux fois, donnez-lui un nom avec une CTE — ce point est abordé dans la prochaine leçon.
Récapitulatif
Les sous-requêtes se présentent sous trois formes.
- Scalaire dans SELECT/WHERE
- De ligne dans les tests d’égalité
- De table dans FROM
- EXISTS pour les tests de type « correspondance quelconque »
Vérification rapide
Quelle forme de sous-requête est utilisée dans une clause FROM comme table temporaire ?
Questions Fréquemment Posées
La leçon « Sous-requêtes scalaires, de lignes et de tables » est-elle gratuite ?
Oui — le texte complet de « Sous-requêtes scalaires, de lignes et de tables » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours SQL Academy, passe à CoddyKit PRO. Le cours SQL Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Sous-requêtes scalaires, de lignes et de tables » ?
Utilisez des sous-requêtes qui renvoient une seule valeur, une seule ligne ou une table complète et placez-les dans les clauses SELECT, FROM et WHERE. Tu pratiques SQL Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer SQL Academy ?
Aucune expérience préalable n'est requise. SQL Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 1 sur 4.
Combien de temps prend la leçon « Sous-requêtes scalaires, de lignes et de tables » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon SQL Academy ?
Oui. Chaque leçon SQL Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Sous-requêtes scalaires, de lignes et de tables
- Sous-requêtes corrélées et non corrélées
- Expressions de table communes (WITH)
- CTE récursives pour les hiérarchies