由UNION形成的表的列名

Dan*_*ick 9 sql sqlite union

给出了几个这样的简单表格:

create table R(foo text);
create table S(bar text);
Run Code Online (Sandbox Code Playgroud)

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

select T.????
from (
    select foo
    from R
    union
    select bar
    from S) as T;
Run Code Online (Sandbox Code Playgroud)

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

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

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

Ali*_*söz 13

尝试为列提供别名;

select T.Col1
from (
    select foo as Col1
    from R
    union
    select bar as Col1
    from S) as T;
Run Code Online (Sandbox Code Playgroud)

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


Shy*_*yam 13

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


Ima*_*idi 6

您只需要在第一个选择中使用列别名(在SQl Server 2008 R2中测试)

select T.Col1
from (
    select 'val1' as Col1
    union
    select 'val2'
    union
    select 'val3'     
) as T;
Run Code Online (Sandbox Code Playgroud)