Noms de colonne pour une table formée par UNION
Question
Soit quelques tableaux simples comme celui-ci:
create table R(foo text);
create table S(bar text);
Si je devais les unir dans une requête, comment j'appellerais la colonne?
select T.????
from (
select foo
from R
union
select bar
from S) as T;
Maintenant, dans mysql, je peux apparemment me référer à la colonne de T en tant que "foo" - le nom de la colonne correspondante pour la première relation dans l'union. Dans sqlite3, cependant, cela ne semble pas fonctionner. Existe-t-il un moyen de le faire standard dans toutes les implémentations SQL?
Si non, que diriez-vous juste pour sqlite3?
Correction: sqlite3 vous permet de faire référence à la colonne de T comme étant "foo" après tout! Oups!
La solution
Bien qu'il n'y ait pas de règle orthographiée, nous pouvons utiliser les noms de colonne de la première sous-requête de la requête d'union pour extraire les résultats de l'union.
Autres conseils
Essayez de donner un alias aux colonnes;
select T.Col1
from (
select foo as Col1
from R
union
select bar as Col1
from S) as T;
ou Si le nom de la colonne n'est pas nécessaire, T. * suffira.
vous n'avez besoin que des alias de colonne uniquement dans la première sélection (testé dans SQl Server 2008 R2)
select T.Col1
from (
select 'val1' as Col1
union
select 'val2'
union
select 'val3'
) as T;