当前位置: 首页 > 面试题库 >

ANSI和非ANSI联接之间有什么区别,您推荐哪些?

燕扬
2023-03-14
问题内容

我访问过许多网站,找到有关哪个更好的答案(ANSI或非ANSI语法)。这两个查询有什么区别?

select a.name,a.empno,b.loc
from tab a, tab b
where a.deptno=b.deptno(+);

和:

select a.name,a.empno,b.loc
from tab a 
left outer join tab b on a.deptno=b.deptno;

在两种情况下,结果都是相同的。第二个查询也更长。哪一个更好?

假设是否基于需要连接它们的条件在上面的查询中添加了另一个表Salgrade?..谁能假设一张桌子并给我解释


问题答案:

两种语法通常都可以正常工作,但是如果您尝试添加where条件,您将发现使用第二种语法更容易理解哪个是连接条件,哪个是where子句。

1)

  SELECT a.name,
         a.empno,
         b.loc 
    FROM tab a,
         tab b 
   WHERE a.deptno = b.deptno(+)
     AND a.empno = 190;

2)

         SELECT a.name,
                a.empno,
                b.loc 
           FROM tab a,
LEFT OUTER JOIN tab b 
             ON a.deptno = b.deptno
          WHERE a.empno = 190;

另外,识别外部联接也很容易,并且不要忘记包含(+)。总的来说,您可以说这只是一个品味问题,但事实是第二种语法更具可读性,并且不易出错。



 类似资料:
  • 问题内容: 在此示例中: 无法编译为: 而被编译器接受。 这个答案说明唯一的区别是,与不同,它允许您稍后引用类型,似乎并非如此。 是什么区别,并在这种情况下,为什么不第一编译? 问题答案: 通过使用以下签名定义方法: 并像这样调用它: 在jls§8.1.2中,我们发现(有趣的部分被我加粗了): 通用类声明定义了一组参数化类型(第4.5节), 每种可能通过类型arguments调用类型参数节的类型

  • Apache Cordova和PhoneGap有什么关系和区别?利弊分别是什么?

  • 问题内容: 使用oracle的plus表示法和ansi标准表示法之间有什么区别? 性能上有区别吗? 加号是否已弃用? 问题答案: 在AFAIK中,该符号仅用于向后兼容,因为Oracle在将ANSI标准用于连接之前就首次使用了该符号。它特定于Oracle,并且当存在等效的符合标准的版本时,应避免在新代码中使用它。 似乎两者之间存在差异,并且该符号具有ANSI连接语法所没有的限制。Oracle自己建议

  • 问题内容: 斯威夫特有: 强引用 参考文献薄弱 无人参考 无主引用与弱引用有何不同? 什么时候可以使用无主引用安全? 无主引用是否像C / C ++中的悬空指针一样具有安全风险? 问题答案: 双方并引用不创建一个被引用的对象上保持(又名它们不会取消分配引用的对象增加,为了保留计数,以防止电弧)。 但是为什么要两个关键词呢?这种区别与类型内置在Swift语言中这一事实有关。长话短说:可选类型提供了内

  • 问题内容: 我不清楚两者之间的区别。 谢谢 问题答案: 它们非常相似,但是存在一些重要的技术差异: 抽象类允许您为某些方法提供默认的实现,但是接口不允许您提供任何实现。 您可以实现多个接口,但只能从一个抽象类继承。 这些差异影响应使用两种技术的方式: 您应该使用接口来 定义合同 。 抽象类对于 重用代码 很有 用 ……但是请注意,它不是重用代码的唯一方法。您还应该考虑其他方法,例如遏制。

  • 文档中说,它们都监听Firebase数据库位置的更改。