2010-05-29 22 views
48

Necesito mover la posición de las columnas existentes (para una mejor visibilidad).¿Cómo reorganizar las columnas de Mysql?

¿Cómo se puede hacer esto sin afectar los datos?

+6

No se engaña: el primero se trata de intercambiar datos, el segundo es sobre "sqlyog". –

Respuesta

48

La única forma que conozco es cambiar la columna. Se podría extraer su primera definición de columna usando SHOW CREATE TABLE y emitir una ALTER TABLE:

ALTER TABLE foo 
CHANGE COLUMN bar 
bar COLUMN_DEFINITION_HERE 
FIRST; 

O si lo desea después de una cierta otra columna:

... AFTER OTHER_COLUMN; 
+5

O '... DESPUÉS DE OTHER_COLUMN' –

+1

Tuve un problema con' ANTES' en lugar de utilizar 'FIRST' –

+7

No hay ANTES en la sintaxis de MySQL [link] (http://dev.mysql.com/doc/refman/5.7 /es/alter-table.html), solo DESPUÉS y PRIMERO – DocGono

41

Modify funciona también. Echar un vistazo:

ALTER TABLE foo MODIFY bar bartype AFTER baz; 
+2

En realidad, esta debería ser la respuesta aceptada. – AlexioVay

+0

¿Alguien podría explicar la diferencia entre CHANGE COLUMN y MODIFY por favor? ¿MODIFICA una operación más liviana? ¿No bloquea la mesa? Gracias. ACTUALIZACIÓN: se parece mucho a CHANGE y MODIFY son sinónimos, donde MODIFY se agregó para los usuarios de Oracle. https://dev.mysql.com/doc/refman/5.7/en/alter-table.html – jjohn

1

Ésta es la consulta SQL
ALTER TABLE nombre_tabla MODIFICAR COLUMNA misplaced_column Columna definición DESPUÉS other_column; Aquí en La definición de columna es una definición de columna completa. Para ver la definición de columna, si está utilizando phpmyadmin, haga clic en la pestaña de estructura. Luego haga clic en cambiar enlace en la columna deseada. Luego, sin modificar nada, haga clic en guardar. Le mostrará el sql. Copie el sql y simplemente agregue * DESPUÉS de other_column * al final. Será todo.

Si te gusta llevar la misplaced_column * * a la primera posición después ALTER TABLE nombre_tabla MODIFICAR COLUMNA misplaced_column definición-columna en primer lugar;

Sin embargo, parece que es una pregunta duplicada.

4
  1. Alter Tabla table_name modify column_name column_datatype first;
  2. Alter Tabla table_name modify column_name column_datatype Después de other_column_name;
Cuestiones relacionadas