2013-02-12 15 views
5

vedere questi due tabelle di esempio:Come ottenere i record non corrispondenti da due tabelle

Tabella 1:

id acc_no name 
------------------------ 
1  14  aaaa 
2  16  bbbb 
3  18  ccccc 
4  25  wwww 
5  27  xxxxxxx 
6  28  zzzzzzz 

Tabella 2:

sr no acc_no amount 
---------------------- 
1  14  2000 
2  16  2344 
3  18  3200 

ho bisogno di ottenere i risultati sulla base di acc_no che non corrispondono alla tabella 1 ad esempio:

OUTPUT:

id acc_no name 
--------------------- 
4 25  wwww 
5 27  xxxxxxx 
6 28  zzzzzzz 

Quando ho provato con domanda sotto, il risultato non era affidabile:

SELECT t1.* 
FROM table1 t1 
    LEFT OUTER JOIN table2 t2 ON t1.acc_no = t2.acc_no 
WHERE t2.acc_no IS NULL 

Dare i vostri suggerimenti. Quale sarà la giusta query SQL per ottenere l'output sopra?

+0

perché il risultato non era affidabile? – fthiella

+0

la tua richiesta è corretta. qual è il problema? –

+0

definire affidabile. –

risposta

8

prova:

SELECT * 
FROM table1 t1 
WHERE t1.acc_no NOT IN (SELECT acc_no FROM table2) 
+0

pulito e semplice .. grazie '+ 1' –

6

dovrebbe essere:

select t1.id,t1.acc_no,t1.name from table1 t1 
    left outer join table2 t2 on t1.acc_no = t2.acc_no 
     where 
    t2.id is null 
+0

@Devand Rathod: funziona solo se il campo Id in entrambe le tabelle sono correlati, ad esempio Tabella 1 L'id è la chiave esterna nella Tabella 2. Giudicando dal codice di esempio del poster non è chiaro (sebbene possibile) che sia così. – Anthill

+0

hai ragione, ma per quanto riguarda acc_no? se usi acc_no allora? –

+0

puoi usare acc_no, come so. –

1

Prova anche questo:

select t1.* from table1 t1 where 
    not exists (
    select 1 from table2 t2 
    where t1.acc_no=t2.acc_no 
    ) 
Problemi correlati