Alternativt kan du også gøre det med en LEFT JOIN:
SELECT t1.* FROM tabel1 t1 LEFT JOIN tabel2 t2 ON t1.felt = t2.felt WHERE t2.felt IS NULL
Den vil kun returnere rækker fra tabel1 hvor der ikke findes en tilsvarende række i tabel2 (alle felter i tabel2 vil i så fald blive returneret som null og hvis du tester på det, vil du kunne udvælge rækker på den baggrund)
Omvendt vil du ved at bruge en INNER JOIN (uden test på NULL) kunne returnere de rækker som er repræsenterede i begge tabeller.
Du ville også kunne have brugt en alternativ løsning med en subquery:
SELECT * FROM tabel1 t1 WHERE NOT EXISTS ( SELECT * FROM tabel2 t2 WHERE t1.felt = t2.felt)
Om disse løsninger er bedre end dr_chaos' løsning? Nej, ikke nødvendigvis. Det afhænger af datamængder, indexes osv.
Det er sjældent der kun er en måde at løse en given opgave på, og kun gennem test og "fingerspitzengefühl" kan man finde den optimale metode.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.