SELECT * FROM tabellA WHERE NOT accountID IN (SELECT accountID FROM tabellB)
Så länge vi inte pratar om någon uråldrig version av MySQL alltså.
9 svar · 347 visningar · startad av Troxy
Hej,
Jag har två tabeller. Posterna i de olika tabellerna länkas samman med kollumnen "accountid", en kollumn som finns i båda tabellerna.
Nu är det så att tabell A innehåller vissa poster där dess "accountid" inte matchar med någon post i tabell B.
Jag vill nu få fram dessa poster ur tabell A. Hoppas ni kan hjälpa mig!
SELECT * FROM tabellA WHERE NOT accountID IN (SELECT accountID FROM tabellB)
Så länge vi inte pratar om någon uråldrig version av MySQL alltså.
Tack så mycket, jag ska testa den direkt.
Btw, servern jag kör mot använder MySQL 4.0.24, den är väl ganska ny?
EDIT: Hm...jag får inte till det. Såhär ser frågan ut:
SELECT * FROM tblaccounts WHERE NOT accountid IN (SELECT accountid FROM tblaccountowner)
Och detta får jag tillbaka:
#1064 - You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT accountid FROM tblaccountowner)' at line 1
MySQL 4.0.24 betecknas nog som uråldrig.
Varför inte uppgradera? Subqueries (som används i exemplet ovan) är mycket användbara, och stöds från och med version 4.1.
Hehe, okej, då är det alltså versionen som är gammal! :e
Jag får ta och ringa serverkillen och be honom uppgradera.
Annars kan man ju skriva om det till en join:
SELECT tabellA.* FROM tabellA
LEFT JOIN tabellB ON tabellA.accountID = tabellB.accountID
WHERE tabellB.någotfält IS NULL
Tack så mycket för hjälpen. Jag testar denna fråga också.
Detta löser sig nog prima efter en uppgradering av mysql-drivern.
De två frågorna i sig bör alltså ge exakt samma resultat, så av just denna anledning krävs inte uppgradering.
Det finns dock ingen anledning att inte uppgradera. :)
@nders: Finns det någon prestandavinst i någon av metoderna? Eller är de fullt likvärdiga? Det vill säga Subqueries vs. JOIN?
mozilla skrev:
Finns det någon prestandavinst i någon av metoderna?
Jag har ärligt talat inte en aning. Om någon har tillgång till MySQL så är det bara att testa att köra frågorna med. Jag tvivlar dock på att det skulle vara någon större skillnad.
mvh