union all 这个是什么数据库的语法。
解决方案 »
- 一个有挑战性的错误,我们几个人都没能解决。关于StackOverflowError
- 关于for循环效率的问题
- java画折线图问题!
- 对两个字符串怎么比较大小啊
- 初装JDK1.5,怎么老是失败呢?急救!
- 搜遍google都找不到异常的根源是什么意思,急!!!!!!!!!!!!!
- 求一好的java反编译工具
- 在写java程序的时间,静态变量是不是越来越好?
- 急问,请教高手:JBudiler7打开database pilot测试发现oracle.jdbc.driver.OracleDriver不能装入。
- 请教高手applet如何用socket和servlet进行通讯?(最好有项细代码)
- 入门问题——什么是JFC?
- 预定义类math.pi为pi的值,代码怎么实现?
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
以上只是一个举例的说法。
可以如下描述:如何使union all生成的数据集再利用。我已经搜索到几篇,但都通不过。
如把上句写全:
select dd,tt
from
(select dd,tt from 2002 union all
select dd,tt from 2003 )
as temp (dd,tt)
即使如此,还是通不过。
请各位赐教!
使用 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
select dd,tt from 2002 union all
select dd,tt from 2003
如果还出错 就说明你的数据库不支持union all
不一定每个数据库都实现标准的sql-92
Union all
Select * from 2003
这样写就可以
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)
则都有错误正在想办法。
谢谢各位!
加括号则为“联合查询错误”
--上回复中加括号应为:
(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
就会返回记录集,其字段以第一个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
而且这并不是标准的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