`

(转)有关外连接的相关注意事项

阅读更多

无其他条件

1select * from n_fwy_a a left join n_fwy_b b on a.id=b.id order by a.id;
2select * from n_fwy_a a ,n_fwy_b b where a.id=b.id(+order by a.id;

 这两重写法的查询的结果一致

在主表加附加条件

1select * from n_fwy_a a ,n_fwy_b b where a.id=b.id(+and a.id >5 order by a.id;
2select * from n_fwy_a a left join n_fwy_b b on a.id=b.id where a.id>5 order by a.id;
3select * from n_fwy_a a left join n_fwy_b b on a.id=b.id and a.id>5 order by a.id;--no


 
这三种写法的前两种查询结果一致,用第2种sql查询得的结果发现出现了n_fwy_a的全集数据

在附表中加条件

 

1select * from n_fwy_a a ,n_fwy_b b where a.id=b.id(+and b.id(+>5 order by a.id;
2select * from n_fwy_a a left join n_fwy_b b on a.id=b.id where b.id >5 order by a.id;--no
3select * from n_fwy_a a left join n_fwy_b b on a.id=b.id and b.id >5 order by a.id;


 
此三种写法的前1,3种查询结果一致,用第2种sql查询得的结果发现仅仅出现了b.id >5的数据集,而其他两种结果集合是a的全集

--对于in 和 or 操作

在老风格(+)的外关联操作中,where 条件中是不允许附表引用in和or操作的。

--对于in操作

1select * 
2from n_fwy_a a ,
3(select * from n_fwy_b b where b.id in (2,8)) b
4where a.id=b.id (+);
5select * 
6from n_fwy_a a left join n_fwy_b b on a.id=b.id and b.id in (2,8);


对于在附表中引用in和or操作,两种写法所得的结果一致

1select * 
2from (select * from n_fwy_a a where a.id in (2,9)) a ,
3n_fwy_b b
4where a.id=b.id (+);
5select * 
6from n_fwy_a a left join n_fwy_b b on a.id=b.id and a.id in (2,9);

 

对于在主表中引用in和or操作,两种写法所得的结果就不一致了,和好理解第一种写法的SQL把主表的数据集变小了,第二种写法的sql的数据集还是主表的全集

--对于OR操作与in的一致

总结:

相对于ANSI风格的外关联,其on后的条件是关联前的筛选数据条件,但是无论加什么条件,它的结果集大小与主表的数据集一样大,对于其where后的条件是关联之后的条件。

对于(+)风格的外关联,where后的条件是关联后的筛选数据的条件。针对附表不能使用in和or操作,若要使用应该在关联之前使用,以缩小数据集合(即在from 中使用表查询),否则的话,起不到外关联的作用,结果集为内连接的结果.

 

分享到:
评论

相关推荐

    德力西产品说明.pdf

    说明书中有关安全运行的注意事项分类成“警告”和“注意”。       :指出潜在的危险情况,如果没有按要求操作,可能会导致人身重伤或者死亡的情况。     :指出潜在的危险情况,如果没有按要求操作,可能会...

    精通SQL 结构化查询语言详解

    9.3.4 外连接(OUTER JOIN)  9.3.5 交叉连接(CROSS JOIN)  9.4 UNION与UNION JOIN  9.4.1 关系的集合运算  9.4.2 UNION运算符  9.4.3 ORDER BY子句排序UNION运算结果  9.4.4 对多表进行UNION运算  ...

    21天学会SQL

    11.2.3 左外连接查询 229 11.2.4 右外连接 230 11.2.5 全外连接 230 11.2.6 交叉连接查询 230 11.2.7 连接查询中使用聚合函数 232 11.2.8 高级连接查询实例 233 11.3 组合查询 235 11.3.1 使用组合查询 236 11.3.2 ...

    精通SQL--结构化查询语言详解

    9.3.4 外连接(outer join) 170 9.3.5 交叉连接(cross join) 176 9.4 union与union join 177 9.4.1 关系的集合运算 177 9.4.2 union运算符 178 9.4.3 order by子句排序union运算结果 180 9.4.4 对多表进行...

    citrix 中文管理操作手册

    SQL Server 的注意事项 149 设置“配置日志记录”数据库连接 149 访问配置日志记录数据库向导 150 配置 SQL Server 数据库以便进行配置日志记录 150 配置 Oracle 数据库以便进行配置日志记录 151 设置“配置日志记录...

    CertViewer-crx插件

    注意事项:1)这与站点建立了外部连接,因此该站点需要可以从外部访问并且没有任何访问控制策略 2)当您单击挂锁时,确实会将活动选项卡URL发送到我的服务器。除了使用openssl和curl之类的工具建立连接外,我对URL不...

    服务器和IT设备日常维护.doc

    服务器及IT设备常维护 一、服务器基本维护知识 服务器硬件维护注意事项 请不要在服务器内扩配或改配未经厂商认证的部件 静电释放和静电释放保护措施:静电释放会对主板、硬盘、板卡和系统的其它部件造成 损害,在您要...

    VC学习大纲 VC学习讲义

    Windows程序运行原理及程序编写流程,窗口产生过程,句柄原理,消息队列,回调函数,窗口关闭与应用程序退出的工作关系,使用VC++的若干小技巧,stdcall与cdecl调用规范的比较,初学者常犯错误及注意事项。...

    ActionScript开发人员指南中文版

    加载和播放声音时的安全注意事项 控制音量和声相 处理声音元数据 访问原始声音数据 捕获声音输入 声音示例:PodcastPlayer 第章:使用视频 视频基础知识 了解视频格式 了解Video类 加载视频文件 控制视频播放 在全屏...

    股票交易源码

    编译注意事项 使用VC6打开工作区StkUI.dsw 然后可以按照以下顺序依次编译各个工程 GuiLib、profuisdll、XPFace、StkLib、StkNet、StkUI、Tools 其中工程StkUI是软件的主界面程序,Tools 是注册机以及一些...

    ASP.NET 大型物流管理系统源码

    四、注意事项 1、默认后台管理员登录名密码均为admin 2、开发环境为Visual Studio 2010,数据库为SQL Server 2008,数据库文件在database文件夹中, 使用.net 3.5开发。 3、该源码需要安装office2003才可以正常...

    介电常数实验实验报告(1).doc

    实验结果 1、tanδ和ε测定记录 编号 "C1 "C2 "C "d "ψ "Q1 "Q2 "ΔQ " "1 " " " " "14 " "51 " " "介电常数ε 1) 介质损耗角正切tanδ 2) Q值 注意事项 电压或频率的剧烈波动常使电桥不能达到良好的平衡,所以测...

    程控交换实验、用户模块电路 主要完成BORSCHT七种功能,它由下列电路组成:

    预习《程控交换原理》与《MCS-51单片计算机原理与应用》中的有关内容。 三、 实验仪器仪表 1、主机实验箱 一台 2、三用表 一台 3、电话单机 四台 四、 实验系统电路组成 (一)电路组成 图1-1是该实验系统的原理...

    介电常数实验实验报告.doc

    实验结果 1、tanδ和ε测定记录 编号 "C1 "C2 "C "d "ψ "Q1 "Q2 "ΔQ " "1 "509.30 "501.00 "8.30 "1.156 "14 "51.2 "51 "0.2 " "介电常数ε 1) 介质损耗角正切tanδ 2) Q值 注意事项 电压或频率的剧烈波动常使...

    asp.net知识库

    .net 2.0 访问Oracle --与Sql Server的差异,注意事项,常见异常 Ado.net 与NHibernate的关系? 动态创建数据库 SQL Server数据库安全规划全攻略 .net通用数据库访问组件SQL Artisan应用简介1 在Framework1.0下...

    c语言编写单片机技巧

    答:在设计高频电路用电路板有许多注意事项,尤其是GHz等级的高频电路,更需要注意各电子组件pad与印刷pattern的长度对电路特性所造成的影响。最近几年高频电路与数位电路共享相同电路板,构成所谓的混载电路系统...

    Access+2000中文版高级编程

    10.5.1 与多重选择有关的列表框属性 284 10.5.2 在多重选择列表框中使用VBA来操作选中项 285 10.6 使用子窗体、子报表向导 291 10.7 对控件提供电子表格的光标移动方式 292 10.7.1 研究问题 292 10.7.2 ...

    Access 2000中文版高级编程(part1)

    Access2000中文版高级编程 目录 第一部分 编程基础 1 第1章 宏与代码 3 1.1 何时使用代码代替宏 4 1.1.1 何时用宏 4 1.1.2 何时用代码 4 1.2 宏到代码的转换 5 ...15.5 使用API调用的注意事项 479 15.5.1 ...

Global site tag (gtag.js) - Google Analytics