sql >> Databáze >  >> RDS >> Sqlserver

Jak vložit data z jednoho sloupce do jiné tabulky

Důvodem, proč se vám zobrazuje tato chyba, je admin_id není NULLABLE to znamená, že musíte mít admin_id pro každý řádek. Když provedete INSERT musíte explicitně vložit admin_id protože to není IDENTITY sloupec vlastností.

Očekávané výsledky ukazují, že chcete provést UPDATE , nikoli INSERT . A UPDATE by UPDATE admin_id aktuálně ve vašem table_admin místo vkládání nových řádků. Jedna věc, která není jasná, je způsob, jakým table_admin se týká table_information . Jak John získá přiřazení admin_id = 1 ?

Jakmile to definujete, zde je UPDATE

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

Pokud je vám jedno, které admin_name získá co admin_id , pak můžete vytvořit náhradní klíč a aktualizovat tabulku. Bude to vypadat takto:

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

UPRAVIT

Pokud žádné nemáte admin_name aktuálně vyplněno v table_admin pak navrhuji, abyste tuto tabulku zkrátili a vložili své odlišné admin_name . Opět bych také vytvořil admin_id vlastnost identity

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

Měl bych zdůraznit, že ve většině schémat je admin_id by něco znamenalo. Byl by to PRIMARY KEY pro tuto tabulku a použít ke spojení této tabulky s ostatními v databázi. Nevědět tedy, které admin_id přejde ke kterému admin_name znamená, že máte na rukou skutečný nepořádek a přiřazujete je náhodně by mělo rozbít následné procesy... ale nemusí to tak být, protože jste to ze začátku neudržovali.

Ptal bych se proč? To by naznačovalo, že máte mapování admin_name na admin_id už... ale neukázal jsi to.




  1. Používá se COUNT v GROUP_CONCAT

  2. php a html formulář na stejné stránce

  3. Chyba SQL:1054, SQLState:42S22 Neznámý sloupec v 'seznamu polí' chyba Java Spring Boot Chyba Mysql

  4. Zkontrolujte, zda existují hodnoty před INSERT INTO ... ON DUPLICATE KEY UPDATE