同じフィールドを持つ 2 つのテーブルがあります。これらを 1 つの大きなテーブルにまとめたいと考えています。各テーブルの主キーは、一意の回答者 ID です。
2 つのテーブルを UNION ALL で結合すると、一部のデータが間違ったフィールドに入れられます。どうしてこれなの?それらは、元のテーブルの正しいフィールドにあります。UNION ALL は正しい演算子ですか?
同じフィールドを持つ 2 つのテーブルがあります。これらを 1 つの大きなテーブルにまとめたいと考えています。各テーブルの主キーは、一意の回答者 ID です。
2 つのテーブルを UNION ALL で結合すると、一部のデータが間違ったフィールドに入れられます。どうしてこれなの?それらは、元のテーブルの正しいフィールドにあります。UNION ALL は正しい演算子ですか?
ユニオンについて覚えておくべきことは、結果のデータセットの列名がユニオン宣言の最初のテーブルによって定義されるということです。
さらに、テーブルの構造の宣言で見つかった順序は、これに影響を与えます。
テーブル A が名前、住所、電子メールとして定義され、テーブル B が名前、電子メール、住所として定義されている場合
select * from tableA
union all
select * from tableB
これを修正するために、'Address' としてエイリアス化された列に tableB.Email を配置します。select ステートメントで列を定義する必要があります。
select Name, Email, Address from tableA
union all
select Name, Email Address from tableB
UNION ALL は正しい操作であるはずですが、両方の部分でフィールドを明示的に名前でリストしましたか、それともワイルドカードとしてアスタリスクを使用しましたか?