Insertar muchos registros de golpe

De ChuWiki

En MySQL se puede hacer un INSERT en el que los datos a añadir se obtengan previamente de un SELECT.

Por ejemplo, supon una tabla con campo1 y campo2 en la que queremos insetar varios registros. Estos registros se obtienen como resultado de un SELECT en otras tablas. La sentencia SQL sería de este estilo

INSERT into tabla SELECT un_campo,otro_campo FROM otras_tablas WHERE una_condicion;

Esto hace la consulta SELECT y obtiene varios registros del estilo un_campo,otro_campo. Estos campos serán los que se inserten en campo1,campo2 de tabla.

Es posible que alguna de estas inserciones falle por estar el registro ya en tabla1. Si esto ocurre, falla la inserción completa. Para evitar que esto ocurra, se puede usar INSERT IGNORE, de forma que ignorará los registros que den fallo y continuará con los demás.

INSERT IGNORE into tabla SELECT un_campo,otro_campo FROM otra_tabla WHERE una_condicion;