Maison >base de données >tutoriel mysql >Comment mettre à jour efficacement plusieurs lignes MySQL avec des valeurs différentes ?

Comment mettre à jour efficacement plusieurs lignes MySQL avec des valeurs différentes ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2025-01-17 11:21:12491parcourir

How to Efficiently Update Multiple MySQL Rows with Different Values?

Mettre à jour efficacement différentes valeurs des enregistrements MySQL multi-lignes

Présentation

La mise à jour de plusieurs lignes avec des valeurs différentes peut être difficile, en particulier avec des conditions WHERE complexes. Cet article vise à simplifier ce processus en expliquant en détail les deux méthodes les plus couramment utilisées : les requêtes multi-instructions et les mises à jour conditionnelles.

Méthode 1 : Requête multi-instructions

Les requêtes multi-instructions vous permettent d'exécuter plusieurs commandes UPDATE en une seule requête. Bien que cette méthode soit simple et directe, elle peut devenir lourde pour de grands ensembles de données. L'exemple que vous avez fourni peut être implémenté comme suit :

<code class="language-sql">UPDATE table_users
SET cod_user = '622057', date = '12082014'
WHERE user_rol = 'student' AND cod_office = '17389551';

UPDATE table_users
SET cod_user = '2913659', date = '12082014'
WHERE user_rol = 'assistant' AND cod_office = '17389551';

UPDATE table_users
SET cod_user = '6160230', date = '12082014'
WHERE user_rol = 'admin' AND cod_office = '17389551';</code>

Méthode 2 : mise à jour conditionnelle à l'aide de l'instruction CASE

Les mises à jour conditionnelles vous permettent d'appliquer différentes valeurs à différentes lignes en fonction des conditions. L'exemple que vous avez fourni pourrait être reformulé comme suit :

<code class="language-sql">UPDATE table_users
SET cod_user = CASE
    WHEN user_role = 'student' THEN '622057'
    WHEN user_role = 'assistant' THEN '2913659'
    WHEN user_role = 'admin' THEN '6160230'
END,
date = '12082014'
WHERE user_role IN ('student', 'assistant', 'admin') AND
cod_office = '17389551';</code>

Cette méthode est plus efficace que les requêtes multi-instructions, notamment dans le cas de grands ensembles de données. Il fournit également un moyen plus propre et plus clair de mettre à jour plusieurs lignes d'enregistrements.

Remarque :

Assurez-vous de stocker les dates dans un format cohérent et natif de la base de données pour éviter des problèmes potentiels.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn