sql: insertar una columna de una tabla a otra después de copiar

CorePress2024-01-25  9

Estoy intentando ejecutar esta consulta en SQL Server Management Studio. Pero recibo un error. Lo que hice inicialmente fue copiar una tabla de otra tabla. la mesa de la que estoy copiando es la mesa de pintar y estoy intentando hacer una réplica de esa mesa de pintar, denominada pintura1. Pero la tarea consistía en copiar todas las columnas excepto 1.

painting 
col1, col2, col3, col4 

La consulta utilizada para esta tarea es la siguiente

SELECT col1, col2, col3  
INTO PAINTING1 
FROM PAINTING 

Después de la creación de pintura1, tiene col1, col2 y col3 de la tabla de pintura. Ahora la tarea era insertar la columna restante en la tabla de réplica, así que lo que hice para insertar esa columna restante para insertar la tabla de réplica pintura1 de la tabla de pintura.

INSERT INTO PAINTING1 (col4)
SELECT col4 FROM PAINTING

Y me encuentro con este error:

nombre de columna no válido 'col4'

Alguna sugerencia sobre quéPuede que esté haciendo mal,

Los datos de muestra y los resultados deseados serían útiles. Si col4 no está en ambas tablas, su pregunta no está clara.

- Gordon Linoff

28/03/2021 a las 15:11

¿Se han realizado cambios en el cuadro 1 mientras tanto? Si no, suéltelo y vuelva a crearlo como lo hizo antes, pero esta vez con la columna adicional.

- poco pegajoso

28/03/2021 a las 15:15

@stickybit, tengo que agregar col4 en una consulta separada después de haber replicado col1, col2 y col3 de pintura a pintura1.

-mxrc

28/03/2021 a las 15:35

Tus palabras te traicionan. No "insertas una etiqueta <nueva> columna" en una tabla, agrega la columna (como ya se sugirió) y luego debecomplételo (si lo desea, esa parte no está clara). Francamente, esta "lección" está mal diseñado y enseña malos hábitos en mi opinión.

- SMor

28/03/2021 a las 16:32



------------------------------------

Primero agregue la nueva columna en la tabla PAINTING1:

ALTER TABLE PAINTING1 ADD col4 INTEGER;

Cambie INTEGER al tipo de datos de col4 que desee.

Lo que realmente necesitas es actualizar PAINTING1 con los valores de la columna col4 de PAINTING. Esto sólo se puede hacer si una de las columnas col1, col2 o col3 es única, como una clave principal, por lo que puede usarse como enlace entre las 2 tablas:

UPDATE p1
SET p1.col4 = p.col4
FROM PAINTING1 p1 INNER JOIN PAINTING p
ON p.col1 = p1.col1

Utilicé col1 como enlace entre las tablas. Si col1 no esúnico, utilice las 3 columnas de la cláusula ON (si su combinación es única):

ON p.col1 = p1.col1 AND p.col2 = p1.col2 AND p.col3 = p1.col3



------------------------------------

Estás creando la tabla con col1, col2 y col3. ¿Cómo puede ser otra cosa que un error al hacer referencia a col4 que no existe?

Por supuesto, puedes agregar columnas adicionales a la tabla en cualquier momento, pero lo que puedes hacer es agregar col4 como parte de tu selección.

SELECT col1, col2, col3, '' as Col4  /* use / cast whatever data type it should be */
INTO PAINTING1 
FROM PAINTING 

Su guía para un futuro mejor - libreflare
Su guía para un futuro mejor - libreflare