Os nomes das colunas de uma tabela formado por um UNION
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!
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;