仓酷云

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

[学习教程] MYSQL教程之sql日志(相干子查询,静态交织表篇)

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

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

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

x
能够以较低的成本向客户提供IT所有权,当节约成本成为客户最高优先级时,解决方案提供商可以向更多的客户同时提供服务。虽然有许多来自RDBMS固有的局限性。静态
比来从头又翻看了一下关于sqlserver的书本,次要检察了一下关于sql中的相干子查询和交织表方面的常识。
相干子查询和一般子查询区分在于:相干子查询援用了内部查询的列。
这类援用内部查询的才能意味着相干子查询不克不及本人自力运转,个中关于内部查询援用会使会使其没法一般实行。因而相干子查询的实行按次以下:
1.起首实行一遍内部查询
2.关于内部查询的每行分离实行一遍子查询,并且每次实行子查询时分城市援用内部确当前行的值。
利用子查询的了局来断定内部查询的了局集。
举个例子;
SELECTt1.type
FROMtitlest1
GROUPBYt1.type
HAVINGMAX(t1.advance)>=ALL
(SELECT2*AVG(t2.advance)
FROMtitlest2
WHEREt1.type=t2.type)
这个了局前往最高预支款凌驾给定组中均匀预支款两倍的书本范例。
在举个例子:
请求前往每个编号的最年夜值(列出id,name,score)
IDName(编号)Score(分数)
1a88
2b76
3c66
4c90
5b77
6a56
7b77
8c67
9a44
select*fromtawherescore=
(selectMax(Score)fromtbwherea.name=b.name)

再给一个排位的sql语句
SELECT(
SELECTcount(*)+1asdd
FROM[Test]asawherea.[F2]<b.[F2])ASord,b.[F1],b.[F2]
FROM[Test]asb
orderbyb.[F2];
好了关于sql的相干子查询先讲到这里。

上面说一下交织表的观点
说到交织表先提一下递回的select变量
递回的select变量可使用select语句和子查询将一个变量与其本身拼接起来。
举一个例子
select@var=@var+d.columnfromtable1a
从而将基本表中垂直的列数据改成程度偏向的数据。如许就能够替换游标。
上面就是静态交织表和静态的交织表的一个对照,静态的交织表如许就取代了传统的游标。
交织表
办法1
selectf_nUMBERas学员,
SUM(casef_subjectwhenA01thenf_nUMend)asA01,
SUM(casef_subjectwhenA02thenf_nUMend)asA02,
SUM(casef_subjectwhenA03thenf_nUMend)asA03,
SUM(casef_subjectwhenA04thenf_nUMend)asA04,
SUM(casef_subjectwhenA05thenf_nUMend)asA05,
SUM(casef_subjectwhenA06thenf_nUMend)asA06,
SUM(casef_subjectwhenA07thenf_nUMend)asA07,
SUM(casef_subjectwhenA08thenf_nUMend)asA08,
SUM(casef_subjectwhenA09thenf_nUMend)asA09
fromrowdatagroupbyf_nUMBERorderbyf_nUMBER

办法2
declare@sqlnvarchar(2000)
set@sql=
select@sql=@sql+sum(caseF_subjectwhen+a.F_subject+thenF_Numelse0end)as
+a.F_Name+,
from(selectdistincttop100percentF_subject,F_NamefromrowdatabJOINSUBJECT_nameconb.F_subject=c.F_numberorderbyF_subject)a
set@sql=selectf_nUMBERas+"学员",+@sql+count(F_Number)as+"测验数量"+
fromrowdatagroupbyF_NumberorderbyF_Number
print@sql
execsp_executesql@sql

MySQL的双许可模式意味着,那些希望对数据库具有额外控制的人可以直接从数据库厂商那儿得到帮助。MySQLAB公司提供了支持和维护服务,诸如代码更新和补丁修补服务等,每年订阅费为大约3000美元。
爱飞 该用户已被删除
沙发
发表于 2015-1-19 16:18:16 | 只看该作者
如果处理少量数据,比如几百条记录的数据,我不知道这两种情况哪个效率更高,如果处理大量数据呢?比如有表中有20万条记录.
飘灵儿 该用户已被删除
板凳
发表于 2015-1-27 06:50:17 | 只看该作者
Mirror可以算是SQLServer的Dataguard了。但是能不能被大伙用起来就不知道了。
柔情似水 该用户已被删除
地板
发表于 2015-2-5 03:58:53 | 只看该作者
groupby子句可以将查询结果分组,并返回行的汇总信息Oracle按照groupby子句中指定的表达式的值分组查询结果。
老尸 该用户已被删除
5#
发表于 2015-2-11 03:42:40 | 只看该作者
原理很简单,对要求长时间计算某一时间点的报表生成和防用户操作错误很有帮助。但是比起Oracle10g的闪回技术还是细粒度不够。可惜!
透明 该用户已被删除
6#
发表于 2015-3-1 21:00:26 | 只看该作者
换言之,只有在不断的失败中尝试成功,而关于失败的总结却是很少的
飘飘悠悠 该用户已被删除
7#
 楼主| 发表于 2015-3-10 23:51:16 | 只看该作者
如果我们从集合论(关系代数)的角度来看,一张数据库的表就是一组数据元的关系,而每个SQL语句会改变一种或数种关系,从而产生出新的数据元的关系(即产生新的表)。
灵魂腐蚀 该用户已被删除
8#
发表于 2015-3-17 16:10:42 | 只看该作者
比如日志传送、比如集群。。。
9#
发表于 2015-3-24 11:59:16 | 只看该作者
我是新手,正在学习数据库和操作系统,深感理论的泛广,唯有一步一步来,但是又感觉时间不够,收集了很多资料却总是没能认真的看完,希望有一个讨论板块,大家共同解决,共同分享,共同努力
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-12-22 20:55

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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