A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© huima 中级黑马   /  2013-4-13 16:27  /  1328 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 huima 于 2013-4-14 17:33 编辑

请问数据库中的的Union、Union All、Intersect、Minus在数据库中的作用是什么,格式怎么写,求举例详细解答???

评分

参与人数 1黑马币 +3 收起 理由
张熙韬 + 3 赞一个!

查看全部评分

3 个回复

正序浏览
如果问题未解决,请继续追问,如果没有问题了,请将帖子分类 改为“已解决”,谢谢
回复 使用道具 举报
Union,对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序;

Union All,对两个结果集进行并集操作,包括重复行,不进行排序;

Intersect,对两个结果集进行交集操作,不包括重复行,同时进行默认规则的排序;

Minus,对两个结果集进行差集操作,不包括重复行,同时进行默认规则的排序。

可以在最后一个结果集中指定Order by子句改变排序方式
差集解释一下:

//创建表1

create table test1
(
name varchar(10),
sex varchar(10),
age int
);

insert into test1 values('luxin','female',25);
insert into test1 values('tom','female',26);
insert into test1 values('mary1','male',27);
insert into test1 values('money','male',27);
insert into test1 values('tony','male',28);
insert into test1 values('tony1','male',19);






//创建表2
create table test2
(
name varchar(10),
sex varchar(10),
age int
);



insert into test2 values('luxin','female',25);
insert into test2 values('tom','female',26);
insert into test2 values('mary2','male',27);
insert into test2 values('money','male',27);
insert into test2 values('tony','male',28);
insert into test2 values('tony2','male',19);



-------------------------------------------




select * from test1 minus select * from test2;

结果:

NAME       SEX               AGE
---------- ---------- ----------
mary1      male               27
tony1      male               19



-----------------------------------------------------------

select * from test2 minus select * from test1;

结果:

NAME       SEX               AGE
---------- ---------- ----------
mary2      male               27
tony2      male               19



结论:Minus返回的总是左边表中的数据,它返回的是差集。

用表1-表2中的数据,如果相同,则去掉,否则返回表1中的数据。

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
这里先简单的给定这四个集合运算定义,并以一段代码实例,例子今后有时间再附上。

  select *

  from emp

  where sal < 4000

  union

  select *

  from emp

  where  sal > 2000;

Union,对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序;

Union All,对两个结果集进行并集操作,包括重复行,不进行排序;

Intersect,对两个结果集进行交集操作,不包括重复行,同时进行默认规则的排序;

Minus,对两个结果集进行差操作,不包括重复行,同时进行默认规则的排序。

可以在最后一个结果集中指定Order by子句改变排序方式





注意:

1,Union可以对字段名不同但数据类型相同的结果集进行合并;

2,如果字段名不同的结果集进行Union,那么对此字段的Order by子句将失效。

评分

参与人数 1技术分 +1 收起 理由
张熙韬 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马