2010-12-08 3 views
2

Un exemple simplifié de ce que je suis en train de réaliser:valeurs de filtre dans le tableau X de la table Y

Tableau 1

FirstName | LastName | Age | Eye Color | 
---------------------------------------| 
John  | Dunbar | 30 | Blue  | 
Jane  | Austin | 98 | Green  | 
John  | Dunbar | 21 | Red  | 
John  | Dunbar | 23 | Brown  | 
Mr  | T  | ...    | 
One  | More  | ...    | 

Tableau 2

FirstName | LastName | 
---------------------| 
John  | Dunbar | 
Mr  | T  | 

Alors, ce que je aime créer est le tableau 1 sans tous les enregistrements correspondant au tableau 2. En d'autres termes, tableau 3:

FirstName | LastName | Age | Eye Color | 
---------------------------------------| 
Jane  | Austin | 98 | Green  | 
One  | More  | ...    | 

Je ne sais pas quel est le meilleur "select" pour y arriver. Je devine une utilisation intelligente de « rejoindre », mais pas sûr ...

Répondre

5

Table3 - sélectionner des lignes de table1 qui ne présente pas dans Tableau2

CREATE TABLE Table3 
    SELECT t1.* from Table1 t1 
    WHERE NOT EXISTS(Select 1 from Table2 t2 
        WHERE t1.FirstName = t2.FirstName 
        AND t1.LastName = t2.LastName) 

Table3 - sélectionner des lignes de table1 qui présentent dans Tableau 2

CREATE TABLE Table3 
    SELECT t1.* from Table1 t1 
    WHERE EXISTS(Select 1 from Table2 t2 
        WHERE t1.FirstName = t2.FirstName 
        AND t1.LastName = t2.LastName) 
0

SELECT * de Table1 où FirstName pas (Sélectionnez Prénom du tableau 2) et LastName pas (Sélectionnez LastName de table2)

Cela devrait fonctionner

Questions connexes