Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

[SOLUCIONADO] Insert de un select con algunas columnas

Estas en el tema de Insert de un select con algunas columnas en el foro de Mysql en Foros del Web. Hola: Tengo una tabla (tabla_destino) con 3 columnas (col1, col2 y col3). Estoy haciendo una copia desde otra tabla (tabla_origen) y para ello utilizo la ...
  #1 (permalink)  
Antiguo 24/07/2015, 17:24
 
Fecha de Ingreso: octubre-2006
Mensajes: 267
Antigüedad: 18 años, 1 mes
Puntos: 6
Pregunta Insert de un select con algunas columnas

Hola:

Tengo una tabla (tabla_destino) con 3 columnas (col1, col2 y col3). Estoy haciendo una copia desde otra tabla (tabla_origen) y para ello utilizo la siguiente sentencia:

Código SQL:
Ver original
  1. INSERT INTO tabla_destino SELECT colA, colB, colC FROM tabla_origen;

Eso funciona, pero no siempre quisiera colocar las 3 columnas. He tratado de utilizar la siguiente sentencia pero no me funciona:

Código SQL:
Ver original
  1. INSERT INTO tabla_destino (col1, col3) VALUES (SELECT colA, colC FROM tabla_origen);

¿Cómo podría hacer para no tener que colocar la lista completa de columnas de la tabla en la que quiero insertar el registro?

Muchas gracias.

Última edición por gnzsoloyo; 24/07/2015 a las 19:39
  #2 (permalink)  
Antiguo 24/07/2015, 17:51
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Insert de un select con algunas columnas

Código SQL:
Ver original
  1. INSERT INTO tabla_destino (col1, col3)
  2. SELECT colA, colC FROM tabla_origen;

Cuando haces un insert de nada mas ciertas columnas tienes que especificarlo, no hay una manera de que esto se haga automatico(el dbms no es adivino )
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 24/07/2015, 18:04
 
Fecha de Ingreso: octubre-2006
Mensajes: 267
Antigüedad: 18 años, 1 mes
Puntos: 6
Respuesta: Insert de un select con algunas columnas

Sí, claro. Como ves en mi "intento", estaba especificando qué columnas. La diferencia con tu sentencia es que no colocas "values", y lo ponía creyendo que era necesario.

Muchas gracias.
  #4 (permalink)  
Antiguo 24/07/2015, 18:05
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Insert de un select con algunas columnas

Cita:
Iniciado por metalfox6383 Ver Mensaje
Sí, claro. Como ves en mi "intento", estaba especificando qué columnas. La diferencia con tu sentencia es que no colocas "values", y lo ponía creyendo que era necesario.

Muchas gracias.
Cuando haces un insert into no es necesario especificar values ;)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #5 (permalink)  
Antiguo 24/07/2015, 19:43
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Insert de un select con algunas columnas

Cita:
Iniciado por metalfox6383 Ver Mensaje
Sí, claro. Como ves en mi "intento", estaba especificando qué columnas. La diferencia con tu sentencia es que no colocas "values", y lo ponía creyendo que era necesario.

Muchas gracias.
Para ser mas preciso, cuando haces un INSERT INTO tabla, donde indicas valores desde variables o constantes, debes ponerlos dentro de un VALUES(). P
Pero la pregunta que hacías es cuando usas
Código SQL:
Ver original
  1. INSERT INTO tabla (...)
  2. SELECT ...
  3. FROM ....
En ese caso no es necesario, porque cada registro devuelto por el SELECT es un set de valores cerrado, es decir un set de VALUES.
La única condición es que el SELECT debe devolver la misma cantidad de columnas que se requieran para el INSERT, y en ese sentido es lo que te dijeron: a menos que la tabla tenga exactamente las mismas columnas, del mismo tipo y en el mismo orden, deben indicarse una a una las columnas de la tabla destino,
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: columnas, insert, registro, select, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:50.