Question originale :
Comment mettre à jour de manière sélective les enregistrements à l'aide d'une instruction CASE dans SQL Server 2005 sans analyser tout cela n'est pas affecté lignes ?
Contexte :
L'instruction CASE suivante est utilisée pour mettre à jour des valeurs spécifiques dans la colonne LASTNAME de la table dbo.TestStudents :
UPDATE dbo.TestStudents SET LASTNAME = ( CASE WHEN (LASTNAME = 'AAA') THEN 'BBB' WHEN (LASTNAME = 'CCC') THEN 'DDD' WHEN (LASTNAME = 'EEE') THEN 'FFF' ELSE (LASTNAME) END )
Bien que cette instruction atteigne l'objectif souhaité, la condition ELSE nécessite d'analyser toutes les lignes du table.
Solution :
Pour éviter d'analyser les lignes non affectées, une clause WHERE peut être ajoutée à l'instruction pour spécifier quelles lignes doivent être mises à jour.
UPDATE dbo.TestStudents SET LASTNAME = CASE WHEN LASTNAME = 'AAA' THEN 'BBB' WHEN LASTNAME = 'CCC' THEN 'DDD' WHEN LASTNAME = 'EEE' THEN 'FFF' ELSE LASTNAME END WHERE LASTNAME IN ('AAA', 'CCC', 'EEE')
En spécifiant les valeurs LASTNAME à mettre à jour dans la clause WHERE, l'instruction met à jour uniquement les lignes concernées et laisse les autres lignes inchangé.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!