Soy de destacar que las combinaciones que se pueden lograr con los comandos y cláusulas del lenguaje SQL no tiene fin. Muestra de ello son estas interesantes opciones que encontré para realizar un swap entre los valores de dos columnas distintas de una misma tabla en MySQL (tarea que parece facil pero que tiene cierta complejidad, aunque no tanta).

Las opciones disponibles y que se publican a continuación son dos, de todas formas, tomando estos ejemplos como base se pueden escribir más variantes. Así también, estos ejemplos se podrían hacer extensivos a un reemplazo de valores entre más de dos columnas.

sql

Los métodos a presentar son dos:

  • El primero no funciona cuando alguna de las consultas no tiene el valor NULL, aunque no quita que agregando algún OR a la condición, no podamos salvar este invonveniente:
UPDATE tabla SET x=y, y=@tmp WHERE (@tmp:=x) IS NOT NULL;

  • El segundo método, desde el vamos, no tiene el inconveniente del primero:
UPDATE tabla t1, tabla t2 SET t1.x=t1.y, t1.y=t2.x WHERE t1.id=t2.id;

Vía: Sentido Web