2009-04-07 9 views
6

J'ai essayé plusieurs choses mais j'ai toujours des erreurs de syntaxe.Comment obtenir toutes les lignes d'une table qui ne sont pas dans une autre dans MS Access?

J'ai deux tables - tableA et tableB. Ils ont tous les deux un champ con_number comme ID unique. Je veux sélectionner toutes les lignes de la tableB qui n'existent pas dans la tableA.

Quelqu'un peut-il s'il vous plaît me donner cette requête comme ce serait dans MS Access?

Je sais que l'utilisation de NOT IN est assez inefficace dans ce cas, donc s'il y a une meilleure façon, ce serait génial.

Merci.

Répondre

17
SELECT TableB.con_number 
FROM TableB 
WHERE NOT EXISTS (SELECT 1 
        FROM TableA 
        WHERE TableA.con_number = TableB.con_number); 
+0

Battez-moi. ;-) +1 – Tomalak

+0

Battre moi aussi ;-) Vous pouvez augmenter la lisibilité de votre message en indentant chaque ligne de 4 espaces (en le mettant en surbrillance et en appuyant sur le bouton exemple de code le fait pour vous) – Smashery

+0

-1, il a demandé une version sans "Not in" –

2

pas dans la version (lente mais sûre):

SELECT con_number 
FROM TableB 
WHERE con_number NOT IN (SELECT con_number FROM tableA); 

version expérimentale (ne sais pas si cela est plus vite, juste essayer):

SELECT B.con_number, MAX(A.con_number) AS check 
FROM tableB B LEFT JOIN tableA A ON B.con_number = A.con_number 
GROUP BY B.con_number 
HAVING check IS NULL; 

Remarque : Les deux devraient être assez standard SQL, je ne connais pas de fonctionnalités spécifiques ms-accès

0

Je me souviens de quelque chose comme celui-ci:

SELECT * FROM TableA.* LEFT JOIN TableB _ 
    ON TableA.con_number = TableB.con_number WHERE 'criteria' 

Mais je ne me souviens plus « critères » d'utiliser

... TableA.con_number <> TableB.con_Number 
... TableB.con_number IS NULL 
... TableA.con_number NOT like TableB.con_Number 
1

Il y a un assistant Trouver Inégalée qui cette configuration. Le SQL est:

SELECT TableB.con_number 
FROM TableB LEFT JOIN TableA 
ON TableB.con_number = TableA.con_number 
WHERE TableA.con_number Is Null 
Questions connexes