2010-04-08 7 views
1

Comment interroger les données de la table_1 dont l'ID n'est pas disponible sur la table_2 qui a des ID en double. Voir l'exemple ci-dessous.MySQL obtient des données d'une autre table avec ID/données en double

Je veux obtenir ID 5 et 6 du tableau 1 du tableau 2

Table 1 
------------- 
| ID | Name | 
| 1 | a | 
| 2 | b | 
| 3 | c | 
| 4 | d | 
| 5 | e | 
| 6 | f | 
------------- 

Table 2 
------------- 
Table 1 ID | 
| 1   | 
| 1   | 
| 2   | 
| 2   | 
| 2   | 
| 3   | 
| 4   | 
------------- 

Merci!

Répondre

2

requête Moins serait très utile, voir ce lien: minus query replacement pour vos données, cela ressemblerait à ceci:

SELECT table_1.id FROM table_1 LEFT JOIN table_2 ON table_2.id = table_1.id WHERE table_2.id IS NULL 
2

Utilisation:

SELECT t.id 
    FROM TABLE_1 t1 
LEFT JOIN TABLE_2 t2 ON t2.id = t1.id 
    WHERE t2.id IS NULL 

avec exists PAS:

SELECT t.id 
    FROM TABLE_1 t1 
    WHERE NOT EXISTS(SELECT NULL 
         FROM TABLE_2 t2 
         WHERE t2.id = t1.id) 

Utiliser NOT IN:

SELECT t.id 
    FROM TABLE_1 t1 
    WHERE t1.id NOT IN (SELECT t2.id 
          FROM TABLE_2 t2) 

Parce qu'il ne devrait pas être des valeurs NULL dans la colonne id table2, GAUCHE JOIN/IS NULL est le moyen le plus rapide: http://explainextended.com/2009/09/18/not-in-vs-not-exists-vs-left-join-is-null-mysql/

0

Si je vous comprends bien, vous voulez faire une jointure externe. Dans ce cas, il serait:

SELECT * FROM 
table_1 LEFT JOIN ON table_2 
ON table_1.id = table_2.id 
WHERE table_2.id is NULL 
0

Celui-ci fait ce que vous voulez:

Select t1.id 
From table1 t1 
Left Join table2 t2 
On t2.id = t1.id 
Where t2.id Is Null 

Résultat:

id 
-- 
5 
6 
Questions connexes