2012-02-11 15 views

Respuesta

40

Puede hacer CREATE TABLE SELECT desde la vista para construirlo. Eso debería duplicar la estructura de la vista como una nueva tabla que contiene todas las filas de la vista. Aquí está el MySQL syntax reference para esta afirmación.

CREATE TABLE tbl_from_view AS  
    SELECT 
    col1, 
    col2, 
    col3, 
    col4, 
    col5 
    FROM your_view; 

Tenga en cuenta que querrá ser muy explícito en las selecciones de sus columnas. No es aconsejable hacer un SELECT * desde la vista de fuente. Asegúrese también de tener alias para cualquier columna calculada o agregada como COUNT(*), MAX(*), (col1 + col2), etc.

+4

¿Por qué no es aconsejable hacer 'SELECT *'? –

+4

@MartinBurch En general, nunca es aconsejable 'SELECT *' en el código de producción, prefiriendo ser explícito sobre las columnas recuperadas y su orden. En el caso de un CTAS, es posible que desee especificar el orden de las columnas. Si sabe con certeza que necesita todas las columnas y ya están en el orden preferido, continúe con 'SELECT *', pero es mejor ser explícito y evitar surpirses (como grandes columnas blob binarias agregadas por sus colegas, sin el conocimiento de tú) –

1

También encontré que en el resultado de mysqldump, hay declaraciones que crean la vista como una tabla, justo antes de definir la vista. Puedo analizarlos y ejecutarlos como consultas.