|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
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的默认数据库,最为常用。拥有较高的插入,查询速度,但不支持事务 |
|