Union de deux tables avec un nombre de colonnes différent
P粉879517403
P粉879517403 2023-08-24 18:54:05
0
2
446

J'ai deux tableaux (tableau A et tableau B).

Les deux tableaux ont un nombre de colonnes différent - en supposant que le tableau A comporte plus de colonnes.

Comment puis-je fusionner ces deux tables et obtenir des valeurs nulles sur les colonnes que la table B n'a pas ?

P粉879517403
P粉879517403

répondre à tous (2)
P粉670107661

Je suis venu ici et j'ai suivi la réponse ci-dessus. Mais la différence d'ordre des types de données a entraîné une erreur. La description ci-dessous d'une autre réponse sera utile.

Les résultats ci-dessus sont-ils dans le même ordre que les colonnes de votre tableau ? Parce qu'Oracle est très strict sur l'ordre des colonnes. L'exemple suivant générera une erreur :

create table test1_1790 ( col_a varchar2(30), col_b number, col_c date); create table test2_1790 ( col_a varchar2(30), col_c date, col_b number); select * from test1_1790 union all select * from test2_1790;

ORA-01790 : l'expression doit avoir le même type de données que l'expression correspondante

Comme vous pouvez le voir, la cause première de l'erreur réside dans la non-concordance de l'ordre des colonnes impliquée par l'utilisation de * comme spécificateur de liste de colonnes. Ce type d'erreur peut être facilement évité en saisissant explicitement la liste des colonnes :

sélectionnez col_a, col_b, col_c dans test1_1790 syndicat tous sélectionnez col_a, col_b, col_c dans test2_1790 ; Une situation plus courante pour cette erreur est lorsque vous échangez (ou déplacez) par inadvertance deux colonnes ou plus dans une liste SELECT :

select col_a, col_b, col_c from test1_1790 union all select col_a, col_c, col_b from test2_1790;

Ou, si ce qui précède ne résout pas votre problème, que diriez-vous de créer un alias dans une colonne, comme ceci : (La requête est différente de la vôtre, mais le point ici est de savoir comment ajouter un alias dans une colonne.)

SELECT id_table_a, desc_table_a, table_b.id_user as iUserID, table_c.field as iField UNION SELECT id_table_a, desc_table_a, table_c.id_user as iUserID, table_c.field as iField
    P粉662361740

    Pour les tableaux avec moins de colonnes, vous pouvez ajouter des colonnes vides supplémentaires, par exemple :

    Select Col1, Col2, Col3, Col4, Col5 from Table1 Union Select Col1, Col2, Col3, Null as Col4, Null as Col5 from Table2
      Derniers téléchargements
      Plus>
      effets Web
      Code source du site Web
      Matériel du site Web
      Modèle frontal
      À propos de nous Clause de non-responsabilité Sitemap
      Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!