Il motivo per cui ricevi questo errore è perché admin_id non è NULLABLE il che significa che devi avere un admin_id per ogni riga. Quando esegui un INSERT devi inserire esplicitamente il admin_id poiché non è un IDENTITY colonna proprietà.
I risultati attesi mostrano che desideri eseguire un UPDATE , non un INSERT . Un UPDATE sarebbe UPDATE il admin_id attualmente nel tuo table_admin tabella invece di inserire nuove righe. L'unica cosa che non è chiara è come table_admin si riferisce a table_information . Come viene assegnato a john admin_id = 1 ?
Una volta definito, ecco il UPDATE
update t
set t.admin_name = i.admin_name
from table_admin t
inner join table_information i on i.someColumn = t.someColumn
Se non ti interessa quale admin_name ottiene cosa admin_id , quindi puoi creare una chiave surrogata e aggiornare la tua tabella. Sarebbe simile a questo:
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
MODIFICA
Se non ne hai nessuno admin_name attualmente popolato nel table_admin quindi ti suggerisco di troncare quella tabella e inserire il tuo distinto admin_name . Di nuovo, farei anche admin_id una proprietà di identità
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
Dovrei evidenziare che nella maggior parte degli schemi, admin_id significherebbe qualcosa. Sarebbe una PRIMARY KEY per questa tabella e da usare per correlare questa tabella ad altre nel database. Quindi, non sapendo quale admin_id va a quale admin_name significa che hai un vero pasticcio tra le mani e assegnarli a caso dovresti interrompi i processi a valle ... ma potrebbe non essere il caso poiché non lo hai tenuto aggiornato per cominciare.
Vorrei chiedere perché? Questo alluderebbe a una mappatura del admin_name a admin_id già... ma non l'hai mostrato.