2017-07-21 7 views
-4

は私が、私は現在、次のコードなぜUNION ALLがエラーを引き起こし、データセットにどのように参加しますか?

これが正常に一緒に列を追加して
select * from table1 
union all 
select * from table2; 

を使用しています

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

取得したいと思い、次の

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

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

に類似したデータセットを持っていますしかし、私はいくつかの誤った値を得ています。私は他に何をすべきかわからない、どんな助けもありがとう!私はVertica SQLを使用しています。私は、例えば意味誤った値によって

EDIT ****** : table2.value2 =(ヌル) table3.value2 = 594792


おかげ

+4

あなたは誤った値とはどういう意味ですか?私たちが理解できるようにいくつかのサンプルデータを表示する必要があります。 –

+1

ここにエラーを入れてもいいですか?すべての列が一致していない可能性もあります。私はあなたの例では3列しか持っていないかもしれないが、実際のテーブルにはおそらく10列あり、もう1列に13があるか、どちらも10種類あります。 – Isaiah3015

+1

'UNION ALL'は結果セットに重複を含み、' UNION'は結果セットに重複を含みません。あなたの質問はあなたの期待される結果を提供します。 –

答えて

0

問題は解決しました。列の順序が異なるため、適切に一致しませんでした。私は列の順序が違っていたことを知らなかった。 @ Isaiah3015私はデータベースのサンプルがこの問題を明らかにしていると思います。皆さん、助けをありがとう!

0

はあなたを持っていますUNION ALLの代わりにUNIONを使用しようとしましたか?

UNIONは、それはあなたの「誤ったデータは、」あなたはどこUNION ALLとしてだけですべてが表示されます、を参照しているだ場合、私は思ったんだけど、重複データを削除します。

あなたの例では

、試してみてください。

SELECT* FROM table1 
UNION 
SELECT* FROM table2 
+0

はい私はunion allの代わりにunionを使ってみました。同じエラーが表3の値2にポップアップします(数値から数値に変わります) –

+0

table2.value2の実際の値はNULLで、table3.value2の値は594792ですか? UNIONなしでこれを検証してください。たとえば、SELECT * FROM table2 – Phil

+0

私はOPがUNIONではなくval <> NULLのJOINを考えていると思っていますが、まだ分かりません。 – Isaiah3015

関連する問題