union all 这个是什么数据库的语法。

解决方案 »

  1.   

    Select *
    From
      (select * from 2002)Union all(Select * from 2003)
    -----------
    或写成:
    -------------
    Select *
    From
      (select * from 2002)Union all(Select * from 2003) as temp (dd,tt)-----------------------------------
    其实你的结果只要即可 记得2002和2003地表结构要一样
    select * from 2002
    Union all
    Select * from 2003如果要排序
    可以
    select * from 
    (select * from 2002
    Union all
    Select * from 2003)
    order by 1
      

  2.   

    Union all是sql-92中的标准语法。
    以上只是一个举例的说法。
    可以如下描述:如何使union all生成的数据集再利用。我已经搜索到几篇,但都通不过。
    如把上句写全:
    select dd,tt
    from 
      (select dd,tt from 2002 union all
       select dd,tt from 2003 )
       as temp (dd,tt)
    即使如此,还是通不过。
    请各位赐教!
      

  3.   

    UNION 运算符使用准则
    使用 UNION 运算符时请遵循以下准则: 
    · 在使用 UNION 运算符组合的语句中,所有选择列表的表达式数目必须相同(列名、算术表达式、聚合函数等)。
    · 在使用 UNION 组合的结果集中的相应列、或个别查询中使用的任意列的子集必须具有相同数据类型,并且两种数据类型之间必须存在可能的隐性数据转换,或提供了显式转换。例如,在 datetime 数据类型的列和 binary 数据类型的列之间不可能存在 UNION 运算符,除非提供了显式转换,而在 money 数据类型的列和 int 数据类型的列之间可以存在 UNION 运算符,因为它们可以进行隐性转换。
    · 用 UNION 运算符组合的各语句中对应的结果集列出现的顺序必须相同,因为 UNION 运算符是按照各个查询给定的顺序逐个比较各列。 
    示例如下: 
    table3     table4  
    a b -c a b
    int char(4) char(4) char(4) float
    --- ------- ------- ------- -------
    1 abc jkl jkl 1.000
    2 def mno mno 5.000
    3 ghi pqr    执行以下查询:
    SELECT a, b FROM table3
    UNION 
    SELECT b, a FROM table4
    下面是结果集:
    a          b
    --------   -----
    1.000000   abc
    2.000000   def
    3.000000   ghi
    1.000000   jkl
    5.000000   mno
    在 UNION 操作中组合不同的数据类型时,这些数据类型将使用数据类型优先级的规则进行转换。在前面的示例中,int 值转换成 float 值,因为 float 类型的优先权比 int 类型高。有关更多信息,请参见数据类型的优先顺序。 
    以下查询将产生错误信息,因为相应列的数据类型不兼容:
    SELECT b, c FROM table3
    UNION 
    SELECT a, b FROM table4
    · 通过 UNION 生成的表中的列名来自 UNION 语句中的第一个单独的查询。若要用新名称引用结果集中的某列(例如在 ORDER BY 子句中),必须按第一个 SELECT 语句中的方式引用该列: 
    · SELECT city AS Cities FROM stores_west
    · UNION 
    · SELECT city FROM stores_east
    · ORDER BY city
      

  4.   

    试试
    select dd,tt from 2002 union all
       select dd,tt from 2003
    如果还出错 就说明你的数据库不支持union all 
    不一定每个数据库都实现标准的sql-92
      

  5.   

    select * from 2002
    Union all
    Select * from 2003
    这样写就可以
      

  6.   

    谢谢各位的回答!
    from字句中的
       select dd,tt from 2002 union all
       select dd,tt from 2003 
    是可以通过的,但若加上一部分:as temp(dd,tt),为:
       select dd,tt from 2002 union all
       select dd,tt from 2003 
       as temp(dd,tt)
    或加括号
       (select dd,tt from 2002 union all
       select dd,tt from 2003 
       as temp(dd,tt)
    则都有错误正在想办法。
    谢谢各位!
      

  7.   

    不加括号为“from 字句错误”
    加括号则为“联合查询错误”
    --上回复中加括号应为:
      (select dd,tt from 2002 union all
       select dd,tt from 2003)
       as temp(dd,tt)
    少打了个括号
      

  8.   

    为什么要加 as temp(dd,tt)本来语句
    select dd,tt from 2002 
    union all
    select dd,tt from 2003
    就会返回记录集,其字段以第一个select语句为准,
    返回的记录集肯定有两个字段:dd、tt
    UNION 运算符使用准则
    使用 UNION 运算符时请遵循以下准则: 
    · 在使用 UNION 运算符组合的语句中,所有选择列表的表达式数目必须相同(列名、算术表达式、聚合函数等)。
    · 在使用 UNION 组合的结果集中的相应列、或个别查询中使用的任意列的子集必须具有相同数据类型,并且两种数据类型之间必须存在可能的隐性数据转换,或提供了显式转换。例如,在 datetime 数据类型的列和 binary 数据类型的列之间不可能存在 UNION 运算符,除非提供了显式转换,而在 money 数据类型的列和 int 数据类型的列之间可以存在 UNION 运算符,因为它们可以进行隐性转换。
    · 用 UNION 运算符组合的各语句中对应的结果集列出现的顺序必须相同,因为 UNION 运算符是按照各个查询给定的顺序逐个比较各列。 
    示例如下: 
    table3     table4  
    a b -c a b
    int char(4) char(4) char(4) float
    --- ------- ------- ------- -------
    1 abc jkl jkl 1.000
    2 def mno mno 5.000
    3 ghi pqr    执行以下查询:
    SELECT a, b FROM table3
    UNION 
    SELECT b, a FROM table4
    下面是结果集:
    a          b
    --------   -----
    1.000000   abc
    2.000000   def
    3.000000   ghi
    1.000000   jkl
    5.000000   mno
    在 UNION 操作中组合不同的数据类型时,这些数据类型将使用数据类型优先级的规则进行转换。在前面的示例中,int 值转换成 float 值,因为 float 类型的优先权比 int 类型高。有关更多信息,请参见数据类型的优先顺序。 
    以下查询将产生错误信息,因为相应列的数据类型不兼容:
    SELECT b, c FROM table3
    UNION 
    SELECT a, b FROM table4
    · 通过 UNION 生成的表中的列名来自 UNION 语句中的第一个单独的查询。若要用新名称引用结果集中的某列(例如在 ORDER BY 子句中),必须按第一个 SELECT 语句中的方式引用该列: 
    · SELECT city AS Cities FROM stores_west
    · UNION 
    · SELECT city FROM stores_east
    · ORDER BY city
      

  9.   

    先说说你要的结果是什么 为什么一定要变成你要的那个as temp(dd,tt)
    而且这并不是标准的sql
    如果你要建立一个虚表
    可以改成
    create view temp(dd,tt)
    as
    select dd,tt from 2002 union all
       select dd,tt from 2003 或者是
    select* from (
    select dd,tt from 2002 union all
       select dd,tt from 2003 ) temp