Alguna vez he tenido que intercambiar los valores de dos columnas de una base de datos por diversas razones, (tarifas equivocadas, idiomas de contenidos, etc...).
Para hacer esto lo habitual es crear una tabla temporal, llevar el contenido a esta tabla, y entonces empezar a realizar las asignaciones. MySQL nos permite realizar todo esto en un solo paso, ya que el se encargará de crear esa tabla temporal de la siguiente manera:
UPDATE tabla_ejemplo SET campo1=campo2, campo2=campo1;
Esto funciona muy bien, excepto si alguno de los campos es NULL, para poder realizar esto de una manera sin problemas con los campos NULL, mejor lo hacemos así:
UPDATE tabla_ejemplo SET campo1=campo2, campo2=@temp WHERE (@temp:=campo1) IS NOT NULL;Leer más...