给定两个简单的表,如下所示:
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‘!糟了!
发布于 2008-11-26 08:06:02
虽然没有拼写规则,但我们可以使用联合查询中第一个子查询中的列名来获取联合结果。
发布于 2008-11-26 08:00:33
尝试为列指定别名;
select T.Col1
from (
select foo as Col1
from R
union
select bar as Col1
from S) as T;或者,如果列的名称不是必需的,那么T.*就足够了。
发布于 2012-08-31 18:46:39
您只需要在first select (在SQl Server2008 R2中测试)中使用列别名
select T.Col1
from (
select 'val1' as Col1
union
select 'val2'
union
select 'val3'
) as T;https://stackoverflow.com/questions/320004
复制相似问题