PaliSkill
SQL Intermédiaire

Leçon 3 / 10 — Chapitre 6: Modifier les données avec rigueur

UPDATE avec une sous-requête en WHERE

La clause WHERE d'un UPDATE peut s'appuyer sur une sous-requête, exactement comme un SELECT — utile pour cibler des lignes selon une condition qui dépend d'une autre table.

UPDATE abonnes
SET statut = 'inactif'
WHERE id IN (
  SELECT abonne_id FROM inscriptions WHERE date_debut < '2023-01-01'
);

Cette instruction ne modifie que les abonnés dont l'id figure dans le résultat de la sous-requête — ceux ayant une inscription antérieure à 2023. Les autres lignes de abonnes restent inchangées.

EXISTS fonctionne tout aussi bien à la place d'IN ici : WHERE EXISTS (SELECT 1 FROM inscriptions i WHERE i.abonne_id = abonnes.id AND i.date_debut < '2023-01-01') cible exactement les mêmes lignes.

À retenir :

  • Le WHERE d'un UPDATE accepte une sous-requête (IN, EXISTS...), exactement comme celui d'un SELECT.
  • Seules les lignes qui remplissent la condition de la sous-requête sont modifiées — les autres restent intactes.
  • Toutes les techniques de sous-requête vues plus tôt dans ce module (IN, EXISTS, corrélation) s'appliquent aussi bien à UPDATE qu'à SELECT.

À vous de jouer : réécrivez ce même UPDATE en remplaçant le IN (...) par un EXISTS corrélé équivalent.

🔒

Continuez ce module

Débloquez les leçons restantes ainsi que la certification finale.

2 500 XOF / 3,81 € / 4,15 $

Débloquez les 80 leçons restantes de ce module

Votre paiement est vérifié avant l'activation de l'accès