A veces, es posible que necesite crear rápidamente una gran cantidad de datos para las pruebas de carga. Puede seleccionar e insertar en la misma tabla en MySQL. Este enfoque hace crecer rápidamente sus tablas existentes. Da muchos discos con los que jugar. Aquí hay algunas maneras de hacerlo.
Insertar en la misma tabla en MySQL
Sintaxis
INSERT INTO table_name ( field1, field2,...fieldN ) SELECT field1, field2, fieldN from table_name;
Ejemplo
Para una tabla table_name con columnas a, b, c
+------+------+------+ | a | b | c | +------+------+------+ | 1 | 2 | 3 | | 4 | 5 | 6 | | 7 | 8 | 9 | | 3 | 3 | 3 | +------+------+------+
Insertar en la misma tabla en MySQL todos los registros de una tabla
mysql> INSERT INTO table_name (a,b,c) select a,b,c from table_name; +------+------+------+ | a | b | c | +------+------+------+ | 1 | 2 | 3 | | 4 | 5 | 6 | | 7 | 8 | 9 | | 3 | 3 | 3 | | 1 | 2 | 3 | | 4 | 5 | 6 | | 7 | 8 | 9 | | 3 | 3 | 3 | +------+------+------+
Insertar en la misma tabla en MySQL algunos registros de una tabla
mysql> INSERT INTO table_name (a,b,c) select a,b,c from table_name where a=1 or a=3; +------+------+------+ | a | b | c | +------+------+------+ | 1 | 2 | 3 | | 4 | 5 | 6 | | 7 | 8 | 9 | | 3 | 3 | 3 | | 1 | 2 | 3 | | 3 | 3 | 3 | +------+------+------+
Es posible que obtenga un error de valor duplicado si uno de estos campos es una clave principal o si tiene una restricción de unicidad para un campo. Así es como puedes evitarlo.
Insertar en la misma tabla en MySQL sin duplicados
Sintaxis
INSERT INTO table_name ( field1, field2,...fieldN ) SELECT field1, field2, fieldN from table_name ON DUPLICATE KEY UPDATE primary_key_field=<expression> ;
Ejemplo
Para una tabla table_name con columnas a, b, c y c es clave principal
+------+------+------+ | a | b | c | +------+------+------+ | 1 | 2 | 3 | | 4 | 5 | 6 | | 7 | 8 | 9 | +------+------+------+
Insertar en la misma tabla en MySQL todos los registros de una tabla
mysql> INSERT INTO table_name (a,b,c) select a,b,c from table_name ON DUPLICATE KEY c=c+1; +------+------+------+ | a | b | c | +------+------+------+ | 1 | 2 | 3 | | 4 | 5 | 6 | | 7 | 8 | 9 | | 1 | 2 | 4 | | 4 | 5 | 7 | | 7 | 8 | 10 | +------+------+------+
Insertar en la misma tabla en MySQL algunos registros de una tabla
mysql> INSERT INTO table_name (a,b,c) select a,b,c from table_name where a=1 or a=3 ON DUPLICATE KEY c=c+1; +------+------+------+ | a | b | c | +------+------+------+ | 1 | 2 | 3 | | 4 | 5 | 6 | | 7 | 8 | 9 | | 1 | 2 | 5 | +------+------+------+
Puede leer más sobre Cómo hacer una inserción masiva en MySQL