2011-10-18 7 views
1

J'ai 4 tables avec la même structure. Ces 4 tables sont générées à partir d'une autre, la table principale.Comparer plusieurs tables dans mysql

  • tableau principal -> A (10 000 lignes)
    • tableau 1 -> A1 (2 000 lignes)
    • Tableau 2 -> a2 (3 000 lignes)
    • Tableau 3 -> A3 (4 lignes) 000
    • tableau 4 -> a4 (1 000 lignes)

Il est supposé que les quatre tables sont générées disjoints, et leur somme est égale à la table A.

Mais je dois le confirmer.

Ma question: Comment puis-je comparer ces 4 tables, pour voir si elles ont un identifiant commun?

Je sais que je peux construire beaucoup de requêtes à la jointure interne a1 avec a2, a1 avec a3 et ainsi de suite.

Mais je pense que cela devrait être un autre meilleur moyen.

+0

Qu'y a-t-il de mal à écrire une jointure interne sur l'ID entre toutes les tables? –

+0

car une jointure interne trouve tous les ID communs aux quatre tables. Mais ce que je veux, c'est pas ça. Je veux savoir si un identifiant particulier apparaît dans plus d'une table. – balsagoth

Répondre

2

Je voudrais juste union all ensemble tous les IDs de chaque table, group by chacun, et vérifier si des ont compte plus d'un

select count(*) from (
select id from table1 union all 
select id from table2 union all 
select id from table3 union all 
select id from table4) group by id having count(*)>1 

Si id se produit plus d'une fois, il apparaîtra dans les résultats de cette requête.

+0

merci! ça marche très bien, et c'est simple. Pour travailler avec mysql, il suffit d'ajouter un alias à la table dérivée. – balsagoth