INSERT [LOW_PRIORITY | HIGH_PRIORITY] [IGNORE] [INTO]tbl_name[(col_name,...)] SELECT ... [ ON DUPLICATE KEY UPDATEcol_name=expr, ... ]
Con INSERT ... SELECT, puede insertar
rápidamente varios registros en un atabla desde una o varias
tablas.
Por ejemplo:
INSERT INTO tbl_temp2 (fld_id) SELECT tbl_temp1.fld_order_id FROM tbl_temp1 WHERE tbl_temp1.fld_order_id > 100;
La siguiente condición sirve para un comando INSERT
... SELECT :
En MySQL 5.0, especifique IGNORE
explícitamente para ignorar registros que causarían
violaciones de clave duplicada.
No use DELAYED con INSERT ...
SELECT.
En MySQL 5.0, la tabla objetivo del comando
INSERT puede aparecer en la cláusula
FROM de la parte
SELECT de la consulta. (Esto no era
posible en algunas versiones antiguas de MySQL.)
Las columnas AUTO_INCREMENT funcionan
normalmente.
Para asegurar que el log binario puede usarse para recrear
las tablas originales, MySQL no permite inserciones
concurrentes durante INSERT ... SELECT.
Actualmente, no puede insertar en una tabla y seleccionar de la misma tabla en una subconsulta.
En las partes de valores de ON DUPLICATE KEY
UPDATE puede referirse a una columna en otras
tablas, mientras no use GROUP BY en la
parte SELECT . Un efecto lateral es que
debe calificar los nombres de columna no únicos en la parte
de valores.
Puede usar REPLACE en lugar de
INSERT para sobreescribir registros
antiguos REPLACE es la contraparte de
INSERT IGNORE en el tratamiento de nuevos
registros que contienen valores de clave única que duplican
registros antiguos: Los nuevos registros se usan para
reemplazar los antiguos registros en lugar de descartarlos.
Ésta es una traducción del manual de referencia de MySQL, que puede encontrarse en dev.mysql.com. El manual de referencia original de MySQL está escrito en inglés, y esta traducción no necesariamente está tan actualizada como la versión original. Para cualquier sugerencia sobre la traducción y para señalar errores de cualquier tipo, no dude en dirigirse a mysql-es@vespito.com.
