8
votes

mySQL remplacer les valeurs dans une table

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.

Je pensais le faire de cette façon: < / p> xxx

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".

Comment puis-je modifier la requête ou dois-je aller d'une autre manière?


0 commentaires

5 Réponses :


5
votes
UPDATE users SET gender='tmp' WHERE gender='male';

UPDATE users SET gender='male' WHERE gender='female';

UPDATE users SET gender='female' WHERE gender='tmp';

1 commentaires

Cette réponse met à jour les enregistrements de table plusieurs fois, consultez les autres pour le faire en une seule fois.



3
votes

combiner deux requêtes en une: -

update users set gender = if (gender='female', 'male', 'female');


2 commentaires

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



14
votes
update users set gender=case when gender='male' then 'female' else 'male' end where gender in ('male','female');

0 commentaires

3
votes
update users set gender='fem' where gender='male';
update users set gender='male' where gender='female';
update users set gender='female' where gender='fem';

0 commentaires

2
votes
update users set gender='wasmale' where gender='male';
update users set gender='male' where gender='female';
update users set gender='female' where gender='wasmale';

0 commentaires