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
WHEREd'unUPDATEaccepte une sous-requête (IN,EXISTS...), exactement comme celui d'unSELECT. - 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 à
UPDATEqu'à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