2011-12-06 18 views
6

Tengo una tabla de usuarios en mi base de datos mysql con columnas como id, edad y sexo. He insertado alrededor de 500 registros en él.mysql reemplazar valores en una tabla

Ahora necesito intercambiar el sexo para los registros, es decir, reemplazar el macho por el femenino y el femenino por el masculino.

pensé que hacerlo de esta manera:

update users set gender='female' where gender='male'; 
update users set gender='male' where gender='female'; 

Pero como se puede ver, en cuanto corro la primera consulta, todos los registros se actualizarán con el género se pone a 'femenina'.

¿Cómo puedo modificar la consulta o debo ir de otra manera?

Respuesta

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

actualizar usuarios establece gender = 'tmp' donde gender = 'male';

actualizar usuarios establece gender = 'male' donde gender = 'female';

actualizar usuarios establece gender = 'female' donde gender = 'tmp';

+0

Esta respuesta actualiza la tabla registra varias veces, echa un vistazo a los otros a hacerlo de una sola vez – golimar

3

combinar dos consultas en una sola: -

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

suponiendo, que tener un tercer género, esto podría actualizar las filas, que no se actualizarán;) – rabudde

+1

sí, pero puede F o M (o FM o MF?) – ajreal

+1

, naturalmente, esto debería ser así;) pero no podría ser un estado 'indefinido' (si OP permite este caso), cuando un usuario no dará ningún dato sobre su género (es decir el sexo del campo podría estar vacío y tu declaración manipularía este campo). pero +1 por usar 'IF' – rabudde

3
update users set gender='fem' where gender='male'; 
update users set gender='male' where gender='female'; 
update users set gender='female' where gender='fem'; 
2
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

' wasmale' fue gracioso !! jajaja –

Cuestiones relacionadas