仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2266|回复: 9
打印 上一主题 下一主题

[学习教程] MSSQL网页设计SQL中UNION 与 UNION ALL 的区分

[复制链接]
深爱那片海 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:31:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
在ORDERBY操作中,MySQL只有在排序条件不是一个查询条件表达式的情况下才使用索引。(虽然如此,在涉及多个数据表查询里,即使有索引可用,那些索引在加快ORDERBY方面也没什么作用)。区分
SQLServer2000中UNION与UNIONALL的区分

UNION运算符:

将两个或更多查询的了局组合为单个了局集,该了局集包括团结查询中的一切查询的全体行。这与利用连接组合两个表中的列分歧。

利用UNION组合两个查询的了局集的两个基础划定规矩是:

一切查询中的列数和列的按次必需不异。

数据范例必需兼容。

这类多了局的查询组合为单一了局集在实践中使用的十分便利。但在使用中也有有着成绩,以下实例能够进一步申明成绩。

成绩形貌:

为了进一步剖析与统计企业中关头部件的临盆进度情形,接纳了一个表Key_Item_Cal,其布局如图一:



图一

经由过程团结查询,将查询分为三个方面:

1、提出数据的基本明细,其代码以下:

SELECTdbo.Key_item.Key_item_nameASItem_Name,

dbo.H_MORVE.QTY_RECVD1ASQuantity,dbo.Key_item.StyleASStyle

FROMdbo.Key_itemLEFTOUTERJOIN

dbo.H_MORVEONdbo.Key_item.Key_item=dbo.H_MORVE.ITEM

WHERE(dbo.Key_item.Key_item1)

OrderbyStyleasc

其了局为:

2、提出数据的一级汇总明细,其代码以下:

SELECTdbo.Key_item.Key_item_nameASItem_Name,

SUM(dbo.H_MORVE.QTY_RECVD1)ASQuantity,MAX(dbo.Key_item.Style)ASStyle

FROMdbo.Key_itemLEFTOUTERJOIN

dbo.H_MORVEONdbo.Key_item.Key_item=dbo.H_MORVE.ITEM

WHERE(dbo.Key_item.Key_item1)

GROUPBYdbo.Key_item.Style,dbo.Key_item.Key_item_name

orderbyStyle

其了局如图如示:



3、提出数据的二级汇总明细,其代码以下:

SELECT MAX(dbo.Key_item.Key_item_name)asItem_Name,

SUM(dbo.H_MORVE.QTY_RECVD1)asQuantity,

dbo.Key_item.StyleasStyle

FROMdbo.Key_itemLEFTOUTERJOIN

dbo.H_MORVEONdbo.Key_item.Key_item=dbo.H_MORVE.ITEM

GROUPBYdbo.Key_item.Style

ORDERBYdbo.Key_item.Styleasc

其了局如图所示:



整体的计划就如以上所示,但经由过程UNION连接的时分呈现了新的成绩。经由过程以下例子,就能够看出UNION与UNIONALL的区分

计划一,其代码以下:

SELECTdbo.Key_item.Key_item_nameASItem_Name,

dbo.H_MORVE.QTY_RECVD1ASQuantity,dbo.Key_item.StyleASStyle

FROMdbo.Key_itemLEFTOUTERJOIN

dbo.H_MORVEONdbo.Key_item.Key_item=dbo.H_MORVE.ITEM

WHERE(dbo.Key_item.Key_item1)

UNION(

SELECTdbo.Key_item.Key_item_nameASItem_Name,

SUM(dbo.H_MORVE.QTY_RECVD1)ASQuantity,MAX(dbo.Key_item.Style)ASStyle

FROMdbo.Key_itemLEFTOUTERJOIN

dbo.H_MORVEONdbo.Key_item.Key_item=dbo.H_MORVE.ITEM

WHERE(dbo.Key_item.Key_item1)

GROUPBYdbo.Key_item.Style,dbo.Key_item.Key_item_name

UNION

SELECTMAX(dbo.Key_item.Key_item_name)asItem_Name,SUM(dbo.H_MORVE.QTY_RECVD1)asQuantity,

dbo.Key_item.StyleasStyle

FROMdbo.Key_itemLEFTOUTERJOIN

dbo.H_MORVEONdbo.Key_item.Key_item=dbo.H_MORVE.ITEM

GROUPBYdbo.Key_item.Style)

ORDERBYdbo.Key_item.Styleasc

GO

其了局以下:



成绩:

经由过程以上了局,能够发明GR180.14.2.1后机架、PY165G.14.2.1B后机架和PY165K.14.2.1后机架的明细与其二级汇总值分明不符。而二级汇总的值是准确,为何明细与汇总值不符?

针对这个成绩,我接纳了第二种计划。

计划二,其代码以下:

SELECTdbo.Key_item.Key_item_nameASItem_Name,

dbo.H_MORVE.QTY_RECVD1ASQuantity,dbo.Key_item.StyleASStyle

FROMdbo.Key_itemLEFTOUTERJOIN

dbo.H_MORVEONdbo.Key_item.Key_item=dbo.H_MORVE.ITEM

WHERE(dbo.Key_item.Key_item1)

UNIONALL(

SELECTdbo.Key_item.Key_item_nameASItem_Name,

SUM(dbo.H_MORVE.QTY_RECVD1)ASQuantity,MAX(dbo.Key_item.Style)ASStyle

FROMdbo.Key_itemLEFTOUTERJOIN

dbo.H_MORVEONdbo.Key_item.Key_item=dbo.H_MORVE.ITEM

WHERE(dbo.Key_item.Key_item1)

GROUPBYdbo.Key_item.Style,dbo.Key_item.Key_item_name

UNION

SELECTMAX(dbo.Key_item.Key_item_name)asItem_Name,

SUM(dbo.H_MORVE.QTY_RECVD1)asQuantity,

dbo.Key_item.StyleasStyle

FROMdbo.Key_itemLEFTOUTERJOIN

dbo.H_MORVEONdbo.Key_item.Key_item=dbo.H_MORVE.ITEM

GROUPBYdbo.Key_item.Style)

ORDERBYdbo.Key_item.Styleasc

GO

其了局如图:



经由过程以上的例子,人人能够看出在UNION与UNIONALL在使用上区分。

自己是应界本科生,愿处置企业信息信息化建立,但愿有效人需求的企业与我接洽。

伊妹儿:Leew4u@126.com

自己静候
MyISAMMysql的默认数据库,最为常用。拥有较高的插入,查询速度,但不支持事务
小魔女 该用户已被删除
沙发
发表于 2015-1-17 19:50:17 | 只看该作者
比如日志传送、比如集群。。。
莫相离 该用户已被删除
板凳
发表于 2015-1-21 07:38:42 | 只看该作者
索引视图2k就有。但是2005对其效率作了一些改进但是schema.viewname的作用域真是太限制了它的应用面。还有一大堆的环境参数和种种限制都让人对它有点却步。
飘飘悠悠 该用户已被删除
地板
发表于 2015-1-30 11:11:32 | 只看该作者
财务软件要用SQL也只是后台的数据库而已,软件都是成品的,当然多学东西肯定是有好处的..
5#
发表于 2015-2-6 10:30:55 | 只看该作者
作了些试验,发现使用CLR的存储过程或函数在达到一定的阀值的时候,系统性能会呈指数级下滑!这是非常危险的!只使用几个可能没有问题,当一旦大规模使用会造成严重的系统性能问题!
山那边是海 该用户已被删除
6#
发表于 2015-2-15 23:37:46 | 只看该作者
原理很简单,对要求长时间计算某一时间点的报表生成和防用户操作错误很有帮助。但是比起Oracle10g的闪回技术还是细粒度不够。可惜!
第二个灵魂 该用户已被删除
7#
发表于 2015-3-4 18:38:03 | 只看该作者
外键的级联更能扩展可能大部分的同行在设计OLTP系统的时候都不愿意建立外键,都是通过程序来控制父子数据的完整性。
再见西城 该用户已被删除
8#
发表于 2015-3-11 20:41:39 | 只看该作者
不好!如果出了错;不好调试;不好处理!其实web开发将代码分为3层:web层;业务逻辑层和数据访问层;一般对数据库的操作都在数据访问层来做;这样便于调试和维护!而且将来如果是换了数据库的话;你只需要改数据层的代码;其他层的基本可以不变!要是你在jsp中直接调用sql数据库;那么如果换了数据库呢?岂不都要改?如果报了异常呢?怎么做异常处理?
愤怒的大鸟 该用户已被删除
9#
发表于 2015-3-19 12:21:07 | 只看该作者
如安全管理、备份恢复、性能监控和调优等,SQL只要熟悉基本操作就可以,只要程序设计部分只要稍加了解即可(如存储过程、触发器等)。
分手快乐 该用户已被删除
10#
发表于 2015-3-28 01:35:19 | 只看该作者
以前的DTS轻盈简单。但是现在的SSIS虽然功能强大了很多,但是总是让人感觉太麻烦。看看论坛中询问SSIS的贴子就知道。做的功能太强大了,往往会有很多用户不会用了
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-4-23 19:56

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表