Je dois demander quelque chose est-il possible de combiner deux tables nombre différent de colonnes comme:Combiner deux tables dans SQL Server 2008
Select a,b,c, from x
union
Select d, e from y
Je dois demander quelque chose est-il possible de combiner deux tables nombre différent de colonnes comme:Combiner deux tables dans SQL Server 2008
Select a,b,c, from x
union
Select d, e from y
vous devez faire quelque chose comme ça
Select a,b,c from x
union all -- ALL doesn't filter dups and is faster
Select d, e, '' as f from y
I utilisé '' mais vous voudrez peut-être utiliser NULL ou 0, NULL sera compatible tous les types de données, '' ne sera pas
J'ai également utilisé UNION ALL pas UNION car il fonctionnera mieux parce qu'il n'a pas t o faire une opération de tri pour se débarrasser de dups
f alias est pas nécessaire ici, soit parce que la requête principale détermine le nom des colonnes dans le resultset
select col1, col2, col3, col4
from mytable1
union all
select col5, col6, null as col7, '' as col8
from mytable2
Notez que
select a, b, c from x
union
select d, e, '' as f from y;
et
select d, e, '' as f from y
union
select a, b, c from x;
donnera des résultats différents à savoir les noms des attributs de la de première La table apparaissant sera utilisée.
Peut-être préférable d'être sans équivoque en renommant explicitement les colonnes de la seconde table, par ex.
select a, b, c from x
union
select d AS a, e AS b, '' as c from y;
ive déjà résolu le problème sans le renommer ... rename n'est pas nécéssaire son obtention des noms de colonnes de la première table thx encore ... –
first table
id
name
second table
name
seatno
si vous souhaitez rejoindre le nom & il y a quelques noms en double dans les tables comme l'utilisation ROW_NUMBER dans join requête!
S'il vous plaît clarifier votre réponse pour l'améliorer, ce n'est pas très clair ce que vous voulez dire. Et pouvez-vous donner un exemple? – Josien
Il est peut-être préférable d'utiliser NULL au lieu de la chaîne vide et vous pouvez également avoir besoin de forcer les types de données dans des types compatibles. L'autre chose qui est parfois utile est d'ajouter une colonne dérivée à l'ensemble pour aider à identifier l'origine des données, donc 'SELECT a, b, c, 'X' AS src ...' – billinkc
aussi simple ... merci @ SQLManace ... Et aussi Billinkc bien mieux de savoir ... –
Je pense que vous avez besoin d'un avertissement plus fort que l'utilisation de «UNION ALL» peut produire des résultats différents. Comme indiqué il est ambigu, "[' UNION ALL'] n'a pas à faire une opération de tri pour se débarrasser des dups "pourrait être interprété par erreur," ["UNION ALL"] se débarrasse des dups sans avoir à faire un opération de tri ". – onedaywhen