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!

Était-ce utile?

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;
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top