2010-06-20 9 views
1

Je veux interroger deux tables comme ci-dessous pour obtenir les lignes dans la nouvelle table qui n'a pas déjà un nom ou une entrée de code dans la table en cours.requête sql pour obtenir de nouvelles données à travers les tables

table current 

name   code 
japan   233 
india   65 
england  44 


table new 

name   code 
japan   233 
india   65 
england-main 44 
japan   2331 
india   652 
usa   1 

Dans ce exampe il doit retourner

name   code 
usa   1 

ce que la requête SQL archivera cette enter code here

Répondre

1
SELECT name, code 
FROM new n 
WHERE NOT EXISTS(SELECT * FROM current c 
       WHERE c.name = n.name OR c.code = n.code) 
+0

Cela a fonctionné dans sqlite. Merci – veccy

1
SELECT name, code 
FROM new 
WHERE name NOT IN (SELECT DISTINCT name FROM current) 
AND code NOT IN (SELECT DISTINCT code FROM current); 

Aucune idée de ce que la saveur de SQL que vous utilisez, donc cette requête pourrait différer ou ne pas travailler du tout.

Post-édition: cette requête vérifie si le nom et le code existent dans la table en cours. Cependant, il ne vérifie pas s'ils sont dans le même enregistrement.

+0

Je l'ai testé dans SQLite. Je vais mettre en œuvre en accès. Toutefois, ce code retourne Angleterre bonne usa Il ne faut pas prendre « Angleterre appropriée 44 » parce que 44 existe déjà comme une valeur de code actuelle – veccy

+0

Oh vous vérifiez les valeurs de code ainsi? Attends, va éditer. –

0
select * from 
(select 
    n.*, 
    c.code as old_code 
from 
    new as n left join 
    current as c on n.code = c.code) as T 
where T.old_code is null 

ou simplement

select * from new as n where not exist (select 1 from current as c where c.code = n.code) 
0
select * from new where name not in (select name from current) and code not in (select code from current); 

ferait l'affaire dans une base MySQL

+0

J'essaye ceci – veccy

0

Essayez ceci:

select * from new_table where name not in (select name from current_table) and 
code not in (select code from current_table); 
+0

Il doit vérifier le nom et le code – veccy

+0

@veccy: J'ai mis à jour si vous voulez également le code là. – Sarfraz

+0

Cela a fonctionné aussi bien dans sqlite – veccy

Questions connexes