MS-SQL中多个表或结果集的组合的方法

来源:互联网 发布:网络安全技术期末考试 编辑:程序博客网 时间:2024/06/07 00:50
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 160x600, 创建于 08-4-23MSDN */google_ad_slot = "4367022601";google_ad_width = 160;google_ad_height = 600;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
MS-SQL如果将两个或更多查询的结果组合为单个结果集,该结果集包含联合查询中的所有查询的全部行,常用的方法如下:
一.      使用union或unionAll语句
1.  union与unionall语句的区别
Ø        UNION组合多个表(或结果集)并将其作为单个结果集返回;
Ø        UNIONALL在结果中包含所有的行,包括重复行。
Ø        也就是说,使用UNION组合两个表时,将重复的记录删除;而使用UNIONALL组合两多个表时,不考虑结果集中是否存在重复记录。
2.  使用UNION运算符时请注意:
Ø        所有查询中的列数和列的顺序必须相同。
    在使用UNION运算符组合的语句中,所有显示列表的数目必须相同(列表内容可以包括:列名、算术表达式、聚合函数等);
Ø        数据类型必须兼容。
    在使用UNION组合的结果集中的相应列必须具有相同数据类型,或者两种数据类型之间存在隐性数据转换,或提供了类型转换。例如,在datetime数据类型的列和binary数据类型的列之间不可能存在UNION运算符,除非提供了显式转换,而在money数据类型的列和int数据类型的列之间可以存在UNION运算符,因为它们可以进行隐性转换。
Ø        用UNION运算符组合的各语句中对应的结果集列出现的顺序必须相同,因为UNION运算符是按照各个查询给定的顺序逐个比较各列。   
3.  与其它Transact-SQL语句一起使用UNION语句时,应注意:
Ø        如果在有UNION的语句中使用INTO语句,则只能在最终表(或结果集)中使用,如果要在单个表(或结果集)中使用INTO语句,MS-SQL将会提示错误;
错误语句:SelectAID,AName,ADemoIntoFromATableUnionAllSelectBID,BName,BDemoIntoFromBtable
Ø        只有在UNION语句的结尾,才允许使用ORDERBY和COMPUTE子句以定义最终结果的顺序或计算汇总值。不能在组建UNION语句的单独查询中使用这些子句。
错误语句:
SelectAID,AName,ADemoFromATableorderbyAID
UnionAll
SelectBID,BName,BDemoFromBTableOrderByBID  
可以这样写:
Select*From
(SelectAID,AName,ADemoFromATableUnionAllSelectBID,BName,BDemoFromBTable)a
OrderBya.AID
也可以这样写:
   SelectAID,AName,ADemoFromATable
   UnionAll
   SelectBID,BName,BDemoFromBTable
     OrderByAID
  此处之所以按AID来排序,是因为MS-SQL中将最后的结果表中的第一列命名为AID。某些DBMS的系统并不对使用不同列名的查询的表列命名,这样就不能使用OrderBy列名的方式来排序,不过可以引用结果表中列的顺序来排序,例如:OrderBy1,则相当于OrderByAID
Ø        GROUPBY和HAVING子句只能在单独的查询中使用;它们不能用来影响最终的结果集。
Ø        UNION运算符可用于INSERT语句中。
    FORBROWSE子句不能在包含UNION上一页 

<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 160x600, 创建于 08-4-23MSDN */google_ad_slot = "4367022601";google_ad_width = 160;google_ad_height = 600;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 神秘信使安卓汉化版 企业信使短信平台 优教信使下载并安装 工行信使不是免费了吗 第二信使有哪些 优教信使平台 优教信使下载 工行信使怎么取消 工商信使费是什么 帝国之主 奥丁信使 迪菲亚兄弟会那个信使任务 末世控植师 奥丁信使 健康云 云康健康产业集团有限公司 创维健康云电视 开云健康 云健康电视 登云健康美业集团 健康云电视 中国人寿云健康 健康云下载 健康云平台 云健康管理系统 健康云服务 创维健康云电视价格 又拍云存储 云存储怎么用 云数据存储 公司云存储 云 存储 图片云存储 云存储下载 企业云存储哪个好 云存储厂家 监控云存储 云存储安全吗 免费云存储哪个好 云存储产品 云存储系统 网络云存储哪个好 移动云存储