码迷,mamicode.com
首页 > 其他好文 > 详细

组合查询

时间:2015-10-21 18:51:56      阅读:160      评论:0      收藏:0      [点我收藏+]

标签:

提示:UNIONWHERE
这一课一开始我们说过,UNION几乎总是完成与多个WHERE条件相同的工作。UNION ALLUNION的一种形式,它完成WHERE子句完成不了的工作。如果确实需要每个条件的匹配行全部出现(包括重复行),就必须使用UNION ALL,而不是WHERE

回到14.2.1节,我们看看所用的SELECT语句。注意到在分别执行语句时,第一条SELECT语句返回3行,第二条SELECT语句返回2行。而在用UNION组合两条SELECT语句后,只返回4行而不是5行。

UNION从查询结果集中自动去除了重复的行;换句话说,它的行为与一条SELECT语句中使用多个WHERE子句条件一样。因为Indiana州有一个Fun4All单位,所以两条SELECT语句都返回该行。使用UNION时,重复的行会被自动取消。

这是UNION的默认行为,如果愿意也可以改变它。事实上,如果想返回所有的匹配行,可使用UNION ALL而不是UNION

SELECT语句的输出用ORDER BY子句排序。在用UNION组合查询时,只能使用一条ORDER BY子句,它必须位于最后一条SELECT语句之后。对于结果集,不存在用一种方式排序一部分,而又用另一种方式排序另一部分的情况,因此不允许使用多条ORDER BY子句。

 

说明:其他类型的UNION
某些DBMS还支持另外两种UNIONEXCEPT(有时称为MINUS)可用来检索只在第一个表中存在而在第二个表中不存在的行;而INTERSECT可用来检索两个表中都存在的行。实际上,这些UNION很少使用,因为相同的结果可利用联结得到。

提示:操作多个表
为了简单,本课中的例子都是使用UNION来组合针对同一表的多个查询。实际上,UNION在需要组合多个表的数据时也很有用,即使是有不匹配列名的表,在这种情况下,可以将UNION与别名组合,检索一个结果集。

组合查询

标签:

原文地址:http://www.cnblogs.com/qook/p/4898392.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!