2010-10-11 3 views

Répondre

2

Sans plus d'informations sur la structure ou la taille de vos données, vous pouvez le faire:

SELECT IF(COUNT(*) = (SELECT COUNT(*) FROM table1) AND COUNT(*) = (SELECT COUNT(*) FROM table2),1,0) AS result FROM 
(
    SELECT * FROM table1 
    UNION 
    SELECT * FROM table2 
) tables_joined 

Mais attention, ce n'est pas une solution idéale. Pour les grands ensembles de données, il pourrait prendre un certain temps

Ceci est non testé, mais le principe général de la réponse est:

  • joindre les deux tables. Si la structure est cohérente (au niveau de base - cela n'inclut pas les types de données, les index, etc.) alors vous n'obtiendrez aucune erreur
  • Après la jointure, comparez le nombre de lignes au nombre de lignes dans l'un des tables
  • Si le nombre de lignes est égal, les données sont identiques (sinon la jointure aurait retourné deux lignes).
  • Sortie 1 si identique ou 0 sinon.
+0

Merci pour votre réponse, mais il ne semble pas fonctionner. Avec des structures de table identiques, l'expression renvoie '1' même si une table a une ligne et l'autre deux. –

+1

Merci pour la mise à jour. En effet, si le compte était le même que le tableau 1, cela ne signifiait pas que le compte était le même que le tableau 2. J'ai mis à jour la déclaration IF en conséquence. –

+0

Génial. Je vous remercie! –

1

tables identiques DOIVENT avoir ids identiques, vous avez juste besoin de vérifier s'il y a une différence entre ids dans les deux tables, de sorte que le code suivant devrait être utile:

Select count(*) from table1 where table1_id IN (select table2_id from table2); 

si le résultat est 0, alors il y a une différence.

La meilleure façon est de voir et de vérifier la structure de la table, comme (imaginez que nous avons 2 tables nommées orod1 et orod2):

select table_name,column_name,data_type 
from information_schema.columns where table_schema='orod_schema' and table_name ='orod%'; 
+0

Les ID peuvent être identiques mais les données du reste de la ligne peuvent être complètement différentes. Tout ceci confirmera que le nombre de lignes est le même. J'aime ton idée de confirmer une structure identique. –

Questions connexes