webForumDet fria alternativet

Något bättre än LEFT JOIN?

Databaser & SQLur Databashanterare & SQL

8 svar · 607 visningar · startad av JahaJoho

Medlem sedan feb. 20139 inlägg
Frågan#1

Jag har två tabeller, Tab1 och Tab2.
Tab1 har kolumnerna ID och VAR1. Tab2 har kolumnerna ID och VAR2.
I Tab1 har varje ID många poster. I Tab2 har varje ID en och endast en post.
Jag vill föra över kolumnen VAR2 till Tab1.

Utseendet kunde vara det följande efter åtgärden:

ID****VAR1****VAR2
10*****7*******3
10*****5*******3
17*****4*******8
17*****9*******8
17*****6*******8
-
osv

Finns det något bättre sätt än LEFT JOIN? Tacksam för hjälp.

Medlem sedan juni 200032 969 inlägg
#2

INNER JOIN - men jag är inte helt säker på vad du menar med "bättre sätt".

mvh

Medlem sedan feb. 20139 inlägg
#3

@nders skrev:

INNER JOIN - men jag är inte helt säker på vad du menar med "bättre sätt".

mvh

Snabbare. Den första tabellen har mer än en miljon poster.

Medlem sedan juni 200032 969 inlägg
#4

Ok, vilken dbms gäller det?

Om det hade varit SQL Server hade jag slängt in Tab2 i en tabellvariabel och joinat mot.

mvh

Medlem sedan feb. 20139 inlägg
#5

Toad for Oracle

Medlem sedan juni 200032 969 inlägg
#6

Jag kan väldigt lite om Oracle - men det känns som att med bra index borde det inte ta så lång tid att exekvera en inner join när tabellerna är så enkla som du beskriver.

mvh

Medlem sedan feb. 20139 inlägg
#7

Vad blir skillnaden med inner join?
Tacksam om du vill visa kod. Med left join fick jag ID-kolumnen en gång till, om jag nu kommer ihåg rätt.

Medlem sedan juni 200032 969 inlägg
#8

I det här sammanhanget är nog inte skillnaden så stor med INNER JOIN - skillnaden är att LEFT JOIN ger dig NULL från tabell 2 om inte JOIN-villkoret uppfylls. INNER kräver att villkoret uppfylls - men på din beskrivning förstod jag att alla poster i Tab1 har en koppling i Tab2.

Om du fick ID-kolumnen en gång till beror det sannolikt på att du skrivit SELECT * - ange istället bara de kolumner du vill ha.

SELECT Tab1.ID, Var1, Var2
FROM Tab1
  INNER JOIN Tab2 
     ON Tab1.ID = Tab2.ID

Mvh

Medlem sedan feb. 20139 inlägg
#9

Jo, så hade jag gjort. Tackar så mycket.

140 ms totalt · 3 externa anrop · v20260731065814-full.9823c0c5
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)