sql多表查询之二:不等连接
标签:
sql多表查询
不等连接
看到有朋友催促啦,赶快上第二盆菜,希望合您口胃哦,有什么建议或意见也欢迎大家多多留言讨论啦,没尝过第一盆菜请先点击这里:sql多表查询之一:Where 和 On的秘密
今天我们要介绍的是sql多表查询不等连接,想知道怎么样用一句SQL得到每日的库存结余吗,那么你千万不要错过今天的内容!
可能有朋友要问了,什么是不等连接呢?
通常来说,SQL语言进行的都是无序操作。想要进行有序的处理,比如比较一个序列的前后项,必须要使用游标。但是,在有些场合下,可采用另一种方法,不用游标,一样能处理有序的信息,这就是不等联接。
看看下面的例子你就更加明白什么是不等连接了。
我有一张表
现在我希望通过一条查询语句使它变成
看到没有,记录数变多了,仅用我们之前学到的a join b where a.XX=b.YY
能解决问题吗?
想想,再看答案
-
select _a.ordinal from @a _a join @a _b on _a.ordinal<=_b.ordinal
总结:
-
连接条件不为=
号的统称不等连接
-
<>,> ,<,like,not in,not exists…..
都可以做为连接条件
这个例子有些抽象,也许大家会说,我用不上这种查询
我给你看看下面这个案例,您就知道这个不等连接有多实用啦
做过企业信息系统应该都知道进销存吧,那么,下面这是一张入库明细表
它记录了每天的入库情况
现在我希望得到每个产品每次入库之后的库存变化情况,如下表所示:
这该怎么办呢?
直观上来讲,我们可以在入库明细表上建一个游标,从第一条开始,每一条,加一次。
也许有些朋友还可以想到用update,不错啦!
但是,只有这些方法吗???
当然不,我们可以用一句SQL
搞定,相信吗?
试试,再看答案
-
Select
_b.
入库日期,_a.
产品,sum(_a.
数量)
当前库存
from @
入库表 _a
join @
入库表 _b
on _a.
产品=_b.
产品 and _a.
入库日期<=_b.
入库日期
group by _b.
入库日期,_a.
产品
不等联接本身就不是一一对应,它的对应关系和顺序有着密切的关系。这也就是我们能够拿它来进行有序操作的原因。这就是不等连接,这次知道了吧!
不等联接查询的有序操作能力,显然来自联接字段的可排序和互异性,所以,最好不要在有重复值的字段上做不等联接(事实上,最好不要在有重复值的字段上做任
何联接,除非你非常肯定你在干什么)。等值联接出现数据爆炸就够可怕的了,不等联接要是玩爆了……嘿嘿嘿……
想像一个等值联接中有一对重复值,可能出现两对重复结果。不过要是不等联接,就和重复的位置有关了。因为这是一个三角形,所以出现在最上面还好,要是出现在这个三角形的下部……
小忠告:不等联接查询,显然是一个有力的工具,但它也是招来麻烦的快捷方式之一。有几个小忠告:
1、如果联接会生成很大的“三角形”,就不要用,试试子查询或哪怕游标;
2、生成的结果集相对于原表越小越好,尽可能地把无用的数据先过滤掉;
3、用不等联接进行数列计算会表达的很清楚(因为是非过程化的),但通常在效率上它没有什么优势,所以,平时玩玩可以,真用的话最好先考虑好;
4、还有就是不等联接不要轻易用在多重联接中,否则可能会引起杠杆作用。
不等连接很神奇吧,功能很强大吧:D,祝大家在这个神奇的世界中旅行愉快!
分享到:
相关推荐
数据查询2—连接查询:同时涉及两个以上的表的查询 连接条件:用来连接两个表的...从两个表中查询,需要先用笛卡尔积将两个表连接起来,连接之后再找出符合条件相等的。 【思考】:如何用SQL表达笛卡尔积×? SELECT Stu
SQL多表连接查询,内联 外联(左外联,右外联)交叉联接
自己学习的笔记--查询计算机系CS男学生学号、姓名和考试成绩 SELECT A.Sno,A.Sname,B.degree FROM student A,sc B WHERE A.Sdept = 'CS' AND A.Ssex = '男' AND A.Sno = B.sno SELECT A.Sno,A.Sname,B.degree FROM ...
本文档为通用SQL数据库查询时所用,讲述的是多表连接!~
SqlServer实验二:数据查询和Transact-SQL基础.doc SqlServer实验二:数据查询和Transact-SQL基础.doc SqlServer实验二:数据查询和Transact-SQL基础.doc SqlServer实验二:数据查询和Transact-SQL基础.doc Sql...
SQL的几种连接:内连接、左联接、右连接、全连接、交叉连接
通常在项目中对表的查询都是关联多张表,多表查询就涉及到sql的内连接、外连接和自连接查询。本篇文章将简单的介绍这些sql连接的使用,希望对大家有所帮助。
sql的多表查询。详细介绍与分解。 多表查询 等连接 通过两个表具有相同意义的列,建立连接条件. 查询结果只显示两个列中的值是等值条件的行数据 表中同名列被选择时必须添加表名前缀进行修饰 否则无法确定这一列...
sql多表连接查询inner join, left join , right join ,full join ,cross join Posted on 2008-05-07 21:55 我开始懂了 阅读(21431) 评论(9) 编辑 收藏 inner join,full outer join,left join,right jion 内部连接 ...
主要内容包括SQL的基础理论、查询优化、查询算法及复杂度,以及在使用子查询、表表达式、排名函数、数据聚合和透视转换、TOP和APPLY、数据修改、分区表、特殊数据结构等实际应用时会遇到的各种高级查询问题和解决...
给坛友演示WinForm+SQL多表联合自定义查询,SQL表结构见: http://bbs.csdn.net/topics/392297046
MySQL连接查询(多表连接查询:内连接,外连接,交叉连接详解) 6:多表连接查询 笛卡尔乘积:如果连接条件省略或无效则会出现 解决办法:添加上连接条件 连接查询的分类: 1.按年代分类: 1)sql 92标准:仅仅...
oracle sql 多表连接和子查询 oracle sql 多表连接和子查询
一个论文,可以做毕业论文使用,很好,不错的东东
SQL数据库查询语句连接查询多表连接查询.docx
第六章 (6.1)多表查询,多表联合查询。sql查询。
SQL高级查询语句_聚合查询,多表查询,连接查询【关系数据库SQL教程5】
Microsoft SQL Server 2005技术内幕:T-SQL查询的源代码,主要是SQL脚本
,了解SQL语句的数据定义与数据更新功能,了解SQL语句的查询功能,掌握SQL中的数据定义语句的用法,熟练掌握SQL中的插入、修改和删除语句的操作,熟练掌握使用SQL语句进行数据库的简单查询、连接查询。 实验内容和...
它详细介绍了T-SQL的内部体系结构,包含了非常全面的编程参考,提供了使用Transact-SQL(T-SQL)的专家级指导,囊括了非常全面的编程参考,揭示了基于集合的查询的强大威力,并包含大量来自专家们的参考和建议。...