webForumDet fria alternativet

Diff på två tabeller

2 svar · 233 visningar · startad av tmb

tmbMedlem sedan feb. 200328 inlägg
#1

Hej!

Har grunnat över detta problem och kommer ingen vart.

Jag vill ha ut de poster i tabell A som _inte_ har en matchning i tabell B. Det är två fält som utgör nyckel. Tabell A och B har andra fält som inte är gemensamma.

Tabell A
----------

k1 k2 d2
1 1 1
1 2 3
2 1 1

Tabell B

k1 k2 d3
1 1 1
1 2 4

Nycklar är k1 och k2. d2 och d3 är bara extra fält för att ställa till det :D

Vad jag vill är alltså att bara få raden "2 1 1" i retur från en fråga. Man kan använda en join och köra distinct men det känns inte som om det är en korrekt lösning. Jag är inte intresserad av att sammanfoga tabellerna utan bara ta fram de diffande posterna. Någon fräsig WHERE-sats borde lösa det hela. Tycker att det borde vara en simpel grej men jag kan inte lista ut det bara.

Tacksam för hjälp.

spangoMedlem sedan juni 20008 205 inlägg
#2

Hmmm...

select * from a where not exists (select * from b where a.k1 = b.k1 and a.k2 = b.k2)

kanske? det känns instinktivt som om nåt är galet men jag vet inte vad :)

tmbMedlem sedan feb. 200328 inlägg
#3

Ah, 'not exist' var det som behövdes :D Funkar ju precis som tänkt.

Tackar allra ödmjukost :D

120 ms totalt · 3 externa anrop · v20260731065814-full.16f3d68c
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
117 ms — hämta tråd, inlägg och bilagor (db)