Come posso ottenere tutte le righe in una tabella che non sono in un altro in MS Access?

Ho provato un sacco di cose diverse ma sempre errori di sintassi.

Ho due tabelle – tabella a e tabella b. Entrambi hanno un con_number campo come un ID univoco.
Voglio selezionare tutte le righe nella tabella b che non esiste nella tabella a.

Qualcuno può per favore darmi questa query come sarebbe in MS Access?

So che l’utilizzo NON è molto inefficiente, in questo caso, quindi, se c’è un modo migliore, quindi, che sarebbe grande.

Grazie.

InformationsquelleAutor | 2009-04-07

4 Replies
  1. 18
    SELECT TableB.con_number
    FROM TableB
    WHERE NOT EXISTS (SELECT 1 
                      FROM TableA 
                      WHERE TableA.con_number = TableB.con_number);
    Mi ha battuto. 😉 +1
    Battere anche me 😉 Si può aumentare la leggibilità dei tuoi post rientrando ogni linea da 4 spazi (evidenziandolo e premendo il codice di esempio pulsante fa proprio questo)
    -1, ha chiesto una versione senza il “Non”
    Quigley: l’inviato di SQL non in uso NON IN, piuttosto usa NON ESISTE.
    Perché il valore di 1 “SELECT 1” linea?

    InformationsquelleAutor Dave Barker

  2. 2

    NON NELLA versione (lento ma sicuro):

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

    versione sperimentale (non so se questo è veloce, basta provare):

    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;

    Nota: Entrambi dovrebbero essere abbastanza standard SQL, non so ms-access caratteristiche specifiche

    InformationsquelleAutor soulmerge

  3. 2

    C’è una ricerca dati non corrispondenti procedura guidata per impostare questo. L’SQL è:

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

    InformationsquelleAutor Fionnuala

  4. 0

    Mi ricordo qualcosa di simile a questo:

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

    Ma non ricordo che i “criteri” per l’utilizzo

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

    InformationsquelleAutor Philippe Grondier

Lascia un commento