【问题标题】:Column names for a table formed by a UNION由 UNION 形成的表的列名
【发布时间】:2010-09-24 02:47:08
【问题描述】:

给定几个像这样的简单表格:

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”!糟糕!

【问题讨论】:

    标签: sql sqlite union


    【解决方案1】:

    尝试为列赋予别名;

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

          猜你喜欢
          • 2014-07-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多