J'ai une table d'utilisateurs dans ma base de données MySQL avec des colonnes comme id, âge et sexe. J'ai inséré environ 500 enregistrements.
Maintenant, je dois échanger le sexe pour les enregistrements, c.-à-d. Remplacer le mâle avec une femme et une femme avec un mâle. P>
Je pensais le faire de cette façon: < / p> Mais comme vous pouvez le constater, dès que j'exécute la première requête, tous les enregistrements seront mis à jour avec le sexe défini sur "Femme". P> Comment puis-je modifier la requête ou dois-je aller d'une autre manière? P> p>
5 Réponses :
UPDATE users SET gender='tmp' WHERE gender='male'; UPDATE users SET gender='male' WHERE gender='female'; UPDATE users SET gender='female' WHERE gender='tmp';
Cette réponse met à jour les enregistrements de table plusieurs fois, consultez les autres pour le faire en une seule fois.
combiner deux requêtes en une: -
update users set gender = if (gender='female', 'male', 'female');
En supposant que vous avez un troisième sexe, cela pourrait mettre à jour les lignes, que vous ne serez pas à jour;)
Naturellement, cela devrait être tel;) mais il pourrait y avoir un état «indéfini» (si OP le permet de ce cas), lorsqu'un utilisateur ne donnera aucune donnée sur son sexe (c'est-à-dire que le sexe sur le terrain pourrait être vide et votre déclaration manipulerait cela. domaine). mais +1 pour utiliser si code>
update users set gender=case when gender='male' then 'female' else 'male' end where gender in ('male','female');
update users set gender='fem' where gender='male'; update users set gender='male' where gender='female'; update users set gender='female' where gender='fem';
update users set gender='wasmale' where gender='male'; update users set gender='male' where gender='female'; update users set gender='female' where gender='wasmale';