MySQL propose plusieurs méthodes pour mettre à jour plusieurs lignes avec des valeurs distinctes dans une seule requête. Bien que les instructions IF
puissent fonctionner, l'instruction CASE
fournit une solution plus concise et plus lisible, en particulier lorsqu'il s'agit de plusieurs conditions.
Considérons un scénario dans lequel nous devons mettre à jour la table table_users
, en attribuant différentes valeurs cod_user
en fonction des rôles d'utilisateur au sein d'un bureau spécifique. Une approche plus propre que l'utilisation de plusieurs IF
déclarations est démontrée ci-dessous :
Cette requête utilise l'instruction CASE
pour mettre à jour cod_user
en fonction de user_rol
:
<code class="language-sql">UPDATE table_users SET cod_user = CASE WHEN user_rol = 'student' THEN '622057' WHEN user_rol = 'assistant' THEN '2913659' WHEN user_rol = 'admin' THEN '6160230' END, date = '12082014' WHERE user_rol IN ('student', 'assistant', 'admin') AND cod_office = '17389551';</code>
Voici une répartition :
CASE
déclaration : Cela gère avec élégance plusieurs conditions. Chaque clause WHEN
vérifie une condition et, si elle est vraie, attribue la valeur cod_user
correspondante.CASE
gère efficacement les différents rôles des utilisateurs.date
mise à jour : Le champ date
est mis à jour à « 12082014 » pour toutes les lignes correspondantes. N'oubliez pas d'ajuster le format de date (« AAAAMMJJ » dans cet exemple) pour qu'il corresponde aux paramètres de votre base de données.WHERE
: Ceci filtre la mise à jour pour affecter uniquement les lignes où user_rol
est « étudiant », « assistant » ou « administrateur » et cod_office
est « 17389551 ».Cette méthode fournit une solution plus efficace et plus maintenable par rapport à l'utilisation de plusieurs UPDATE
instructions individuelles ou de structures IF
imbriquées complexes. L'instruction CASE
améliore la lisibilité et simplifie la logique globale de la requête.
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!