给出了几个这样的简单表格:
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'毕竟!哎呀!
尝试为列提供别名;
select T.Col1 from ( select foo as Col1 from R union select bar as Col1 from S) as T;
或者如果不需要列的名称那么T.*就足够了.
虽然没有拼写规则,但我们可以使用union查询中第一个子查询的列名来获取联合结果.
您只需要在第一个选择中使用列别名(在SQl Server 2008 R2中测试)
select T.Col1 from ( select 'val1' as Col1 union select 'val2' union select 'val3' ) as T;