知识大全 SQL中UNION 与 UNION ALL的区别分析

Posted

篇首语:最慢的步伐不是跬步,而是徘徊;最快的脚步不是冲刺,而是坚持。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 SQL中UNION 与 UNION ALL的区别分析相关的知识,希望对你有一定的参考价值。

SQL中UNION 与 UNION ALL的区别分析  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  UNION 运算符     将两个或更多查询的结果组合为单个结果集 该结果集包含联合查询中的所有查询的全部行 这与使用联接组合两个表中的列不同     使用 UNION 组合两个查询的结果集的两个基本规则是     所有查询中的列数和列的顺序必须相同     数据类型必须兼容       这种多结果的查询组合为单一结果集在实际中应用的非常方便 但在应用中也有有着问题 如下实例可以进一步说明问题     问题描述       为了进一步分析与统计企业中关键部件的生产进度情况 采用了一个表Key_Item_Cal 其结构如图一    >  通过联合查询 将查询分为三个方面      1 提出数据的基础明细 其代码如下   SELECT dbo Key_item Key_item_name AS Item_Name      dbo H_MORVE QTY_RECVD AS Quantity dbo Key_item Style AS Style    FROM dbo Key_item LEFT OUTER JOIN     dbo H_MORVE ON dbo Key_item Key_item = dbo H_MORVE ITEM    WHERE (dbo Key_item Key_item <> )    Order by Style asc     >   2 提出数据的一级汇总明细 其代码如下   SELECT dbo Key_item Key_item_name AS Item_Name      SUM(dbo H_MORVE QTY_RECVD ) AS Quantity MAX(dbo Key_item Style) AS Style    FROM dbo Key_item LEFT OUTER JOIN     dbo H_MORVE ON dbo Key_item Key_item = dbo H_MORVE ITEM    WHERE (dbo Key_item Key_item <> )    GROUP BY dbo Key_item Style dbo Key_item Key_item_name    order by Style    其结果如图如示      >   3 提出数据的二级汇总明细 其代码如下   SELECT MAX(dbo Key_item Key_item_name) as Item_Name     SUM(dbo H_MORVE QTY_RECVD ) as Quantity      dbo Key_item Style as Style    FROM dbo Key_item LEFT OUTER JOIN     dbo H_MORVE ON dbo Key_item Key_item = dbo H_MORVE ITEM    GROUP BY dbo Key_item Style    ORDER BY dbo Key_item Style asc    其结果如图所示      >  总体的设计就如以上所示 但通过UNION联接的时候出现了新的问题 通过以下例子 就可以看出UNION与UNION ALL的区别    方案一 其代码如下     SELECT dbo Key_item Key_item_name AS Item_Name      dbo H_MORVE QTY_RECVD AS Quantity dbo Key_item Style AS Style    FROM dbo Key_item LEFT OUTER JOIN     dbo H_MORVE ON dbo Key_item Key_item = dbo H_MORVE ITEM    WHERE (dbo Key_item Key_item <> )    UNION (    SELECT dbo Key_item Key_item_name AS Item_Name      SUM(dbo H_MORVE QTY_RECVD ) AS Quantity MAX(dbo Key_item Style) AS Style    FROM dbo Key_item LEFT OUTER JOIN     dbo H_MORVE ON dbo Key_item Key_item = dbo H_MORVE ITEM    WHERE (dbo Key_item Key_item <> )    GROUP BY dbo Key_item Style dbo Key_item Key_item_name    UNION     SELECT MAX(dbo Key_item Key_item_name) as Item_Name SUM(dbo H_MORVE QTY_RECVD ) as Quantity      dbo Key_item Style as Style    FROM dbo Key_item LEFT OUTER JOIN     dbo H_MORVE ON dbo Key_item Key_item = dbo H_MORVE ITEM    GROUP BY dbo Key_item Style)    ORDER BY dbo Key_item Style asc    GO    其结果如下      >  问题       通过以上结果 可以发现GR 后机架 PY G B后机架和PY K 后机架的明细与其二级汇总值明显不符 而二级汇总的值是正确 为什么明细与汇总值不符?    针对这个问题 我采用了第二种方案     方案二 其代码如下     SELECT dbo Key_item Key_item_name AS Item_Name      dbo H_MORVE QTY_RECVD AS Quantity dbo Key_item Style AS Style    FROM dbo Key_item LEFT OUTER JOIN     dbo H_MORVE ON dbo Key_item Key_item = dbo H_MORVE ITEM    WHERE (dbo Key_item Key_item <> )    UNION ALL(    SELECT dbo Key_item Key_item_name AS Item_Name      SUM(dbo H_MORVE QTY_RECVD ) AS Quantity MAX(dbo Key_item Style) AS Style    FROM dbo Key_item LEFT OUTER JOIN     dbo H_MORVE ON dbo Key_item Key_item = dbo H_MORVE ITEM    WHERE (dbo Key_item Key_item <> )    GROUP BY dbo Key_item Style dbo Key_item Key_item_name    UNION     SELECT MAX(dbo Key_item Key_item_name) as Item_Name     SUM(dbo H_MORVE QTY_RECVD ) as Quantity      dbo Key_item Style as Style    FROM dbo Key_item LEFT OUTER JOIN     dbo H_MORVE ON dbo Key_item Key_item = dbo H_MORVE ITEM    GROUP BY dbo Key_item Style)    ORDER BY dbo Key_item Style asc    GO    其结果如图      >  通过以上的例子 大家可以看出在UNION与UNION ALL在应用上区别 cha138/Article/program/SQLServer/201311/22130

相关参考

知识大全 UNION(2)

SQL实战新手入门:UNION(2)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  UNION(

知识大全 init

  在uclinux启动时有一个默认的初始线程uclinux用一个union来保存这个线程的数据其定义在arch/blackfin/kenel/init_taskc中  /*  *Initialthr

知识大全 oracle与sql的区别(常用函数)

  许多软件公司都理解开发不依赖于特定数据库类型(例如OracleSQLServerDB)的应用程序的重要性它可以让客户们选择自己习惯的平台一般来说软件开发人员都能够识别出他们的负责数据库维护的客户和

all_459.htm

1、草绿色、黄绿色:此种颜色的水体中所含的藻类以绿藻门的藻类为主,如绿球藻、新月藻、多芒藻等藻类。一般情况下,生长绿藻的水体颜色呈黄绿色,绿藻繁殖较多时,水色呈草绿色。绿藻可以大量吸收氮肥,起到净化水

all_459.htm

1、草绿色、黄绿色:此种颜色的水体中所含的藻类以绿藻门的藻类为主,如绿球藻、新月藻、多芒藻等藻类。一般情况下,生长绿藻的水体颜色呈黄绿色,绿藻繁殖较多时,水色呈草绿色。绿藻可以大量吸收氮肥,起到净化水

知识大全 ORACLE和SQL语法区别归纳(2)

ORACLE和SQL语法区别归纳(2)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  字串连接 

知识大全 PL/SQL的几个概念区别

PL/SQL的几个概念区别  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  char和varcha

知识大全 MS SQL Server和MySQL区别

MSSQLServer和MySQL区别  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  MySQL

知识大全 SQL Server字符串区别大小写方法

SQLServer字符串区别大小写方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在SQLS

all_1043.htm

夏季是鱼种培育十分重要的环节,好的培育措施能促进生长,增强体质,提高抗病能力,为成鱼养殖提供大规格、体格健壮的优良鱼种,实现增产、增收、增效。但是由于夏季水温较高,水质极易变坏,高温、水质、饲料等因素