由UNION形成的表的列名

时间:2008-11-26 07:49:42

标签: sql sqlite union

给出了几个简单的表:

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

如果我在查询中将它们联合在一起,我该怎么称呼该列?

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

现在,在mysql中,我显然可以将T列称为'foo' - 联合中第一个关系的匹配列的名称。但是,在sqlite3中,这似乎不起作用。有没有办法在所有SQL实现中做到标准?

如果没有,那对于sqlite3怎么样?

更正:sqlite3确实允许你将T的列称为'foo'毕竟!糟糕!

3 个答案:

答案 0 :(得分:13)

尝试为列提供别名;

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

或如果不需要列的名称,那么T. *就足够了。

答案 1 :(得分:13)

虽然没有拼写规则,但我们可以使用union查询中第一个子查询中的列名来获取联合结果。

答案 2 :(得分:6)

仅在第一次选择时需要列别名(在SQl Server 2008 R2中测试)

select T.Col1
from (
    select 'val1' as Col1
    union
    select 'val2'
    union
    select 'val3'     
) as T;