TABLE AA
ID NAME
1 猪八戒
2 孙悟空
TABLE BB
ID NAME
1 猪八戒
2 沙和尚
3 唐僧SELECT ID,NAME FROM AA
UNION
SELECT ID,NAME FROM BB;得
ID NAME
1 猪八戒
2 孙悟空
2 沙和尚
3 唐僧
而
SELECT ID,NAME FROM AA
UNION ALL
SELECT ID,NAME FROM BB;得
1 猪八戒
2 孙悟空
1 猪八戒
2 沙和尚
3 唐僧
一个是UNION, 另一个是UNION ALL, 不一样的,看一下SELECT的结果
就知道了,就这些。
ID NAME
1 猪八戒
2 孙悟空
TABLE BB
ID NAME
1 猪八戒
2 沙和尚
3 唐僧SELECT ID,NAME FROM AA
UNION
SELECT ID,NAME FROM BB;得
ID NAME
1 猪八戒
2 孙悟空
2 沙和尚
3 唐僧
而
SELECT ID,NAME FROM AA
UNION ALL
SELECT ID,NAME FROM BB;得
1 猪八戒
2 孙悟空
1 猪八戒
2 沙和尚
3 唐僧
一个是UNION, 另一个是UNION ALL, 不一样的,看一下SELECT的结果
就知道了,就这些。
比如说:有12张表记录一个用户的每月话费清单,要查询这个用户的一年话费情况,就可以采用Union方式检索出来!你体会一下吧!
下面是一个简单的例子:SQL> create table t1 (col1 varchar2(10));
Table created.SQL> create table t2 (col2 varchar2(10));
Table created.SQL> insert into t1 values ('A');
1 row created.SQL> insert into t2 values ('B');
1 row created.SQL> insert into t1 values ('B');
1 row created.SQL> select * from t1;
COL1
----------
A
BSQL> select * from t2;
COL2
----------
BSQL> select * from t1
2 union all
3 select * from t2;
COL1
----------
A
B
BSQL> select * from t1
2 union
3 select * from t2;
COL1
----------
A
B
例如:select a,b,c from aa union select a,b from aa;是错误的;
只要类型、位置和个数都一样才可以用union.
SELECT '',9,'上期结转',SUM(a),SUM(b),SUM(c),SUM(d),SUM(e),
SUM(f),0 FROM table1
WHERE SUBSTR(BM,1,4)='1001'
UNION SELECT BM,month,'本年累计',A,B,C,D,E,F,1
FROM table2 WHERE month BETWEEN 9 AND 10 AND BM ='1001'第一条select 语句中的“0”是一个排序号,是table1里面没有的字段
是由sql语句增加的一列,这种用法还请说明一下……
Union will request sorting action and it takes additional memory (sort area size) ,while Union all is different .
SUM(f),0 FROM table1
WHERE SUBSTR(BM,1,4)='1001'
UNION SELECT BM,month,'本年累计',A,B,C,D,E,F,1
FROM table2 WHERE month BETWEEN 9 AND 10 AND BM ='1001'没有问题,可以这样增加,就象qiuyang_wang(小数点) 的select a,b,c from aa union select a,b from aa,那样,可以在第二个语句种添加一个数据类型和另外一张表的字段一样的值,比如字符可以用‘k’,数字用3等,具体就是select a,b,c from aa union select a,b,'k' as c from aa;那就可以了。