2011-10-06 10 views

Répondre

3

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

+1

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

+0

aussi simple ... merci @ SQLManace ... Et aussi Billinkc bien mieux de savoir ... –

+0

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

0
select col1, col2, col3, col4 
from mytable1 
union all 
select col5, col6, null as col7, '' as col8 
from mytable2 
1

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; 
+0

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 ... –

0
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!

+0

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

Questions connexes