Bueno para hacerlo se hace de la siguiente forma:
Digamos que tenemos la tabla mitabla y que tenemos campo0 que es igual a mi llave primaria, aparte de eso tenemos campo1, campo2 y campo3, y queremos duplicar todo lo que haya en campo1, campo2 y campo3, quedaria entonces de la siguiente forma:
INSERT INTO mitabla (campo1, campo2, campo3) SELECT campo1,campo2,campo3 FROM mitabla WHERE campo2=1
El anterior es un ejemplo de como quedaria cuando queremos duplicar los campos1, 2 y 3 que coincidan con el campo2 igual a 1.
A continuacion se muestra como insertar valores en dado caso de que no queramos que sea un campo:
INSERT INTO mitabla (campo1, campo2, campo3) SELECT 12,campo2,’Info’ FROM mitabla WHERE campo2=1
Vemos que en el campo 1 se insertara 12 y en campo 3 se insertara el texto Info, pero el campo2 seguira insertando lo que hay en el campo2, digamos que no tenemos en nuestra tabla no tenemos llaves, o campos que sean unicos y no se puedan repetir, entonces eso facilita mas las cosas si queremos copiar todos, en nuestro caso la tabla mi tabla tendria campo0, campo1 y campo2 el ejemplo quedaria asi:
INSERT INTO mitabla SELECT campo0, campo1, campo2 FROM mitabla WHERE campo2=1
Y copiariamos todos los campos que existen en la tabla sin problema porque de otro modo podria darnos error por que no puede duplicar un numero unico o una llave primaria, no he probado usar un SELECT *, pero bueno, dejo esto como anotacion y para ver si a alguien mas le sirve.
