2017-07-21 7 views
-4

J'ai des ensembles de données similaires à ce qui suitPourquoi UNION ALL provoque-t-il des erreurs et comment joindre mes ensembles de données?

TABLE1 
Column1,Column2,Column3, 
ID1 ,ID2 ,Value1 

TABLE2 
Column1,Column2,Column3, 
ID3 ,ID2 ,Value2 

Je voudrais obtenir

TABLE3 
Column1,Column2,Column3 
ID1 ,ID2 ,Value1 
ID3 ,ID2 ,Value2 

Je suis actuellement en utilisant le code suivant

select * from table1 
union all 
select * from table2; 

Ce ajoute avec succès les colonnes ensemble, mais je reçois des valeurs erronées. Je ne suis pas sûr de ce que je devrais faire d'autre, toute aide est appréciée! J'utilise Vertica SQL.

EDIT ****** par des valeurs erronées que je veux dire par exemple: table2.value2 = (null) table3.value2 = 594792


Merci

+4

vous devriez montrer quelques exemples de données afin que nous puissions comprendre. –

+1

Pouvez-vous mettre l'erreur ici? Il est également possible que toutes vos colonnes ne correspondent pas. Je sais que vous n'avez que 3 colonnes dans votre exemple mais peut-être dans vos vraies tables, l'une a 10 colonnes, l'autre 13 ou les deux ont 10 noms différents. – Isaiah3015

+1

'UNION ALL' inclura des doublons dans le jeu de résultats, alors que 'UNION' ne le fera pas. Cette petite part de côté, votre requête fournira les résultats attendus. –

Répondre

0

Problème résolu. Les colonnes étaient dans un ordre différent et ne correspondaient donc pas correctement. Je n'ai pas réalisé que les colonnes étaient dans un ordre différent. @ Isaiah3015 Je parie qu'un échantillon de la base de données aurait rendu ce problème évident. Merci à tous pour l'aide! Que voulez-vous dire par des valeurs erronées?

0

Avez-vous essayé d'utiliser UNION au lieu de UNION ALL? UNION supprimera les données en double, ce dont je me demande si vous faites référence à vos "données erronées", où UNION ALL affichera tout.

Dans votre exemple, essayez:

SELECT* FROM table1 
UNION 
SELECT* FROM table2 
+0

Oui, j'ai essayé d'utiliser union au lieu de tous les syndicats. La même erreur apparaît dans la valeur 2 dans la table trois (elle passe de null à avoir une valeur numérique) –

+0

Se pourrait-il que la valeur réelle dans table2.value2 soit NULL alors que table3.value2 a une valeur de 594792? Essayez de vérifier cela sans l'UNION. Par exemple: SELECT * FROM table2 – Phil

+0

Je crois que OP pense à un JOIN où val <> NULL, plutôt qu'un UNION mais ne le sait pas encore. – Isaiah3015