inserte datos de una tabla a otra en mysql

Quiero leer todos los datos de una tabla e insertar algunos datos en otra tabla. mi consulta es

INSERT INTO mt_magazine_subscription ( magazine_subscription_id, subscription_name, magazine_id, status ) VALUES ( (SELECT magazine_subscription_id, subscription_name, magazine_id FROM tbl_magazine_subscription ORDER BY magazine_subscription_id ASC), '1') 

pero tengo un error que

  #1136 - Column count doesn't match value count at row 1 

por favor, ayúdame.

Puede usar la syntax INSERTAR … SELECCIONAR . Tenga en cuenta que puede citar ‘1’ directamente en la parte SELECCIONAR.

 INSERT INTO mt_magazine_subscription ( magazine_subscription_id, subscription_name, magazine_id, status ) SELECT magazine_subscription_id, subscription_name, magazine_id, '1' FROM tbl_magazine_subscription ORDER BY magazine_subscription_id ASC 

Si desea insertar todos los datos de una tabla a otra, hay un sql muy simple

 INSERT INTO destinationTable (SELECT * FROM sourceDbName.SourceTableName); 

No funcionará así.

Cuando intente insertar la fila utilizando una consulta, todos los valores deberían estar allí en la consulta.

Con el problema anterior, desea insertar magazine_subscription_id, subscription_name, magazine_id, status en la consulta de selección tiene magazine_subscription_id, subscription_name, magazine_id, status 1 no es posible.

Si desea insertar cualquiera, debe insertar utilizando la consulta de valores directos

En realidad, la consulta de MySQL para copiar datos de una tabla a otra es
Insert into table2_name (column_names) select column_name from table1
donde, los valores copiados de tabla1 a tabla2

Si hay una clave principal como “id”, debe excluirla, por ejemplo, mi tabla php tiene: columnas id, col2, col3, col4. id es la clave principal, así que si ejecuto este código:

 INSERT INTO php (SELECT * FROM php); 

Probablemente entiendo este error:

#1062 - Duplicate entry '1' for key 'PRIMARY'

Así que aquí está la solución, excluí la clave “id”:

 INSERT INTO php ( col2,col3,col4) (SELECT col2,col3,col4 FROM php2); 

Así que mi nueva tabla php ya tiene todas las filas de la tabla php2.

Prueba esto. Haces lo contrario.

  INSERT INTO mt_magazine_subscription( magazine_subscription_id, subscription_name, magazine_id, status) VALUES ( (SELECT magazine_subscription_id, subscription_name, magazine_id,1 as status FROM tbl_magazine_subscription ORDER BY magazine_subscription_id ASC) ) 
  INSERT INTO mt_magazine_subscription ( magazine_subscription_id, subscription_name, magazine_id, status ) VALUES ( (SELECT magazine_subscription_id, subscription_name, magazine_id,'1' as status FROM tbl_magazine_subscription ORDER BY magazine_subscription_id ASC)) 
 INSERT INTO destination_table ( Field_1, Field_2, Field_3) SELECT Field_1, Field_2, Field_3 FROM source_table; 

PERO esto es MALO MALO

Haz esto en su lugar:

  1. drop the destination table: DROP DESTINATION_TABLE;
  2. CREATE TABLE DESTINATION_TABLE AS (SELECT * FROM SOURCE_TABLE);
 INSERT INTO mt_magazine_subscription SELECT * FROM tbl_magazine_subscription ORDER BY magazine_subscription_id ASC