Pergunta

Dado um par de tabelas simples assim:

create table R(foo text);
create table S(bar text);

Se eu fosse para a união los juntos em uma consulta, o que eu chamo a coluna?

select T.????
from (
    select foo
    from R
    union
    select bar
    from S) as T;

Agora, em mysql, posso aparentemente consulte a coluna de T como 'foo' - o nome da coluna correspondente para a primeira relação na união. Em sqlite3, no entanto, que não parece trabalho. Existe uma maneira de fazê-lo que é padrão em todas as implementações de SQL?

Se não, como sobre apenas para sqlite3?

Correção: sqlite3 não permite que você consulte a coluna de T como 'foo' depois de tudo! Ops!

Foi útil?

Solução

Embora não haja nenhuma regra espelta, podemos usar os nomes das colunas da primeira subconsulta na consulta união para buscar os resultados da União.

Outras dicas

Tente dar um alias para colunas;

select T.Col1
from (
    select foo as Col1
    from R
    union
    select bar as Col1
    from S) as T;

ou se o nome da coluna não é necessário T. então * será suficiente.

você só precisa de aliases de coluna somente na primeira select (testado no SQL Server 2008 R2)

select T.Col1
from (
    select 'val1' as Col1
    union
    select 'val2'
    union
    select 'val3'     
) as T;
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top