ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 关于Natural Join

关于Natural Join

原创 Linux操作系统 作者:yangjie_5211 时间:2009-12-31 11:01:33 0 删除 编辑
         昨天项目中遇到一个问题,让我想到了如下。
         场景再现:有两张表,一张记录模块的基本信息,另一张记录同portal的管理关系,关系表中module_id字段是外键,要查询某个portal的全部模块。很自然想到用Natural Join,因为当时两个表中只有module_id同名,运行正常。第二天,换了个环境,不能正常查询出结果,开始以为是环境问题,查了好久,发现同组的人给关系表新加了个冗余字段,目的是便于直观阅读该表信息,很不幸这个字段恰好同模块表中的一个字段同名了,导致自然连接条件变了。于是将查询语句有natural join换成了join... using语句,运行正常。

       回家翻了翻书,了解了ANSI JOIN语法相关细节及应用场景:
       natural join:指明了两表进行自然连接,并且连接是基于两表中所有同名字段的。
       join...using:用于两表有同名字段但数据类型不同,或者使用多个同名字段中的某一个做等值连接
       join...on :最为灵活,可以指明连接的条件。

       因此上面的场景就可以这么解释:新加入字段导致自然连接的条件发生变化,修改后变为了指定字段的等值连接。像这种项目中的类似问题,还是不要使用自然连接的好,最开始就使用join...using或join...on避免他人因修改表结构造成的错误。


:End

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/21402791/viewspace-624052/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: 关于检查点和SCN
请登录后发表评论 登录
全部评论

注册时间:2009-12-18

  • 博文量
    12
  • 访问量
    11117