webForumDet fria alternativet

MySQL - where x not in (...)

5 svar · 360 visningar · startad av sharkface

sharkfaceMedlem sedan okt. 200040 inlägg
#1

Hej!

Har följande kod som jag inte får att funka i MySQL. Jag tror att frågan ska vara korrekt, men versionen jag har av databasen verkar inte kunna hantera denna typ av frågor.

select ID from A where 
ID not in 
(select A.ID from A, B where A.ID=B.ID)
order by xxx

Hur kan jag skriva detta på ett sätt så att MySQL förstår mig? Antar att jag måste använda nån typ av join eller liknande...

JosefMedlem sedan mars 20023 561 inlägg
#2

Har för mig att bara MySQL 5:an har stöd för subqueries.

PaceMedlem sedan juni 20019 024 inlägg
#3
select A.ID from A, B where A.ID <> B.ID
@ndersMedlem sedan juni 200032 969 inlägg
#4

Josef skrev:

Har för mig att bara MySQL 5:an har stöd för subqueries.

Nästan. :)

Från och med version 4.1 är det som gäller.

SELECT A.ID FROM A LEFT JOIN B ON A.ID = B.ID
WHERE B.ID IS NULL
ORDER BY xxx
@ndersMedlem sedan juni 200032 969 inlägg
#5

Jag passar också på att flytta tråden till SQL.

(Jag rapporterade tråden för flytt, men det visade sig att jag är moderator i forumet, så jag flyttar själv. Sorry, LarsG! :) )

sharkfaceMedlem sedan okt. 200040 inlägg
#6

Jag var för odetaljerad...

Hej och tack för bra svar!

@nders är nog inne på det jag behöver, men jag får inte riktigt till det med din kod som utgångspunkt (lite för ovan att jobba med joins).
Koden nedan gör precis det jag vill, frågan är bara hur detta ska den se ut med join-satser istället för ...not in(sel...)

select p_ID, smeknamn 
from p 
where 
p_ID not in 
(
select P.p_ID 
from p P, p_i_grupp PIG 
where 
P.p_ID=PIG.p_ID and 
PIG.grupp_ID=1 and 
P.aktiv_F=1
) 
order by smeknamn
135 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)