webForumDet fria alternativet

query utan subquery?

7 svar · 334 visningar · startad av mrblonde

mrblondeMedlem sedan aug. 20012 349 inlägg
#1

veckans sql-fråga:

om jag har en tabell A med bl.a. en kolumn "id" och en annan tabell B med bl.a. en kolumn "other_id" där other_id är en referens till id i andra tabellen.

hur skriver jag en query "Ge mig alla id som inte har någon referens till sig från tabell B" utan att använda sub_queries?

motsvarande med subquery:
SELECT
A.id
FROM
A
WHERE
A.id NOT IN ( SELECT other_id FROM B )

@ndersMedlem sedan juni 200032 969 inlägg
#2

Jag hade spontant försökt med något sånt här:

SELECT A.ID FROM A LEFT OUTER JOIN B ON A.ID = B.other_id AND b.other_ID IS NULL

Edit: Vad betyder spontalt? :o

Mvh

LarsGMedlem sedan dec. 200012 464 inlägg
#3
select a.id from a except select other_id from b
mrblondeMedlem sedan aug. 20012 349 inlägg
#4

Det här svaret är till @nders

nej det gav ju inte något bra resultat, fick alla raderna i tabell A tillbaka.

A tabellen
aid
1
2
3
4
5

B tabellen
bid, baid
10 1
20 2
40 4

Så svaret på queryn skall bli aid= 3 och 5

Var så sabla länge sedan jag skrev SQL... argh!

@ndersMedlem sedan juni 200032 969 inlägg
#5

Och om du byter AND mot WHERE?

(gissar)

mrblondeMedlem sedan aug. 20012 349 inlägg
#6

Lars, det fungerade inte heller, det är en subquery, det är en gammal MySQL db som jag frågar om.

mrblondeMedlem sedan aug. 20012 349 inlägg
#7
SELECT A.aID FROM A left outer JOIN B ON A.aID = B.baid WHERE b.baid IS NULL

Fungerade, tack för er eminenta snabba hjälp!

@ndersMedlem sedan juni 200032 969 inlägg
#8

And eller where i dessa fall, det lär jag mig aldrig. ;)

LarsG, tack för ny kunskap. :)

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