webForumDet fria alternativet

Jämföra två tabeller - få ut det som inte finns i båda

Databaser & SQL

4 svar · 186 visningar · startad av Davida

Medlem sedan okt. 2000219 inlägg
Frågan#1

Hej!

Jag har två tabeller med e-postadresser. En huvudtabell där jag ska föra in de som finns i den andra tabellen som inte redan finns i huvudtabellen...

Hur gör jag?

Medlem sedan dec. 200012 464 inlägg
#2
insert into huvudtabell select <kolumner> from andratabellen
where email not in (select email from huvudtabell)
Medlem sedan okt. 2000219 inlägg
#3

Jag har ändrat till

insert into Kontakter select [e-post] from Blad1
where [e-post] not in (select [e-postadress] from Kontakter)

Men får felet

"Cirkelreferens orsakad av aliaset e-post i frågans selectfunktion"

Vad är fel då?

Medlem sedan dec. 200012 464 inlägg
#4

Det verkar som en begränsning i den DBMS du använder. Access?

Du kan ju testa detta alternativ

insert into Kontakter([e-postadress] )
 select [e-post] from Blad1 left join kontaker 
on [e-post] =  [e-postadress] 
where [e-postadress] is null

Om det inte fungerar så går det alltid att göra det i flera steg. Skapa en temptabell med resultatet av selectfrågan och gör sedan insert från den tabellen.

Medlem sedan okt. 2000219 inlägg
#5

Hej!

Jag använder MS Access. Med viss modifikation funkade det nästan... Den la inte till något i tabellen kontakter, men jag fick ut de kontakter som en egen tabell där jag kunde kopiera över dem manuellt...

Ändrade koden blev:

INSERT INTO Kontakter ( [e-postadress] )
SELECT [e-post]
FROM Blad1 LEFT JOIN kontakter ON [Blad1].[e-post]=[Kontakter].[e-postadress]
WHERE [e-postadress] is null;

252 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
126 ms — deklarationer (db)
0 ms — hämta statistik (cache)
124 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)