jueves, 11 de agosto de 2011

[MySQL] intercambiar valores entre columnas

Tengo una tabla de usuarios en la que por error, determinados registros tienen intercambiados los valores correspondientes en las columnas de nombres y apellidos. Tras buscar por ahí, la solución que me ha parecido más comprensible, y que no utiliza variables temporales, es esta. En ella se utiliza la misma tabla con dos alias distintos, lo cual permite trabajar como si se tuvieran dos tablas distintas:

UPDATE usuario u1, usuario u2

SET u1.nombre=u1.apellidos, u1.apellidos=u2.nombre

WHERE u1.idUsuario=u2.idUsuario AND u1.departamento='Contabilidad'

Datos personales