sql >> Base de Datos >  >> RDS >> Sqlserver

Cómo insertar los datos de una columna en otra tabla

La razón por la que recibe este error es porque admin_id no es NULLABLE lo que significa que debes tener un admin_id por cada fila. Cuando realiza un INSERT debe insertar explícitamente el admin_id ya que no es una IDENTITY columna de propiedades

Sus resultados esperados muestran que desea hacer una UPDATE , no un INSERT . Una UPDATE UPDATE el admin_id actualmente en su table_admin tabla en lugar de insertar filas nuevas. Lo único que no está claro es cómo table_admin se relaciona con table_information . ¿Cómo se le asigna a John admin_id = 1? ?

Una vez que definas eso, aquí está la UPDATE

update t 
set t.admin_name = i.admin_name
from table_admin t
inner join table_information i on i.someColumn = t.someColumn

Si no le importa qué admin_name obtiene lo que admin_id , luego puede crear una clave sustituta y actualizar su tabla. Se vería así:

select distinct 
    admin_name
    ,admin_id = row_number() over (order by (select null))
into #tempInformation
from table_information

--this is going to show the admin_id that will be updated in the table_admin table
select * from #tempInformation

update t 
set t.admin_name = i.admin_name
from table_admin t
inner join #tempInformation i on i.admin_id = t.admin_id

EDITAR

Si no tienes ninguna admin_name actualmente poblado en el table_admin entonces le sugiero que simplemente trunque esa tabla e inserte su distintivo admin_name . Nuevamente, también haría admin_id una propiedad de identidad

truncate table table_admin

insert into table_admin (admin_id, admin_name)
   select distinct 
        admin_id = row_number() over (order by (select null))
        ,admin_name

Debo resaltar que en la mayoría de los esquemas, el admin_id significaría algo. Sería una PRIMARY KEY para esta tabla y usarse para relacionar esta tabla con otras en la base de datos. Por lo tanto, sin saber qué admin_id va a cuál admin_name significa que tienes un verdadero lío en tus manos y asignarlas al azar debería rompa los procesos posteriores... pero puede que ese no sea el caso ya que, para empezar, no lo ha estado manteniendo.

Yo preguntaría ¿por qué? Esto aludiría a que tiene un mapeo de admin_name a admin_id ya... pero no lo has demostrado.