Sql 联接和子查询之间的区别是什么?我们可以用联接做的任何事情都可以用子查询做吗?反之亦然?

Sql 联接和子查询之间的区别是什么?我们可以用联接做的任何事情都可以用子查询做吗?反之亦然?,sql,database,oracle,Sql,Database,Oracle,可能重复: 我们可以用连接做什么,但不能用子查询做什么,反之亦然?在大多数情况下,对于企业应用程序,问题不仅仅是是否可以做一些事情,而是如何做。一般来说,联接比子查询更快、成本更低。关于这个主题的其他帖子太多了。这里有一个:坦白地说,我想不出有哪一种情况是两种方法(子查询或联接)都不能实现一件事 对我来说,更多的是关于可读性和性能。例如,子查询可能较慢,而连接可能利用某些索引。我想,至少从DBMS的角度来看,在分析表达式时优化连接应该更容易 例如,考虑几个表示为子查询的联接的情况。对大多数人来

可能重复:


我们可以用连接做什么,但不能用子查询做什么,反之亦然?

在大多数情况下,对于企业应用程序,问题不仅仅是是否可以做一些事情,而是如何做。一般来说,联接比子查询更快、成本更低。关于这个主题的其他帖子太多了。这里有一个:

坦白地说,我想不出有哪一种情况是两种方法(子查询或联接)都不能实现一件事

对我来说,更多的是关于可读性和性能。例如,子查询可能较慢,而连接可能利用某些索引。我想,至少从DBMS的角度来看,在分析表达式时优化连接应该更容易


例如,考虑几个表示为子查询的联接的情况。对大多数人来说,将语句表示为
Left
Right
internal
join会更容易理解和维护。我甚至避免使用隐式连接,因为它们隐藏了意图。换句话说,我更喜欢将连接表示为a.id=b.id上的表a内部连接表b中的
,而将连接表示为a.id=b.id的表b中的
将连接实现为子查询会使其更不可读,依我看。

这种问题不应该出现在这里。一开始没什么意义。有什么相似之处?:-)“一般来说,联接速度更快,成本更低”--但推广有什么价值吗?有没有办法使用联接在oracle中编写相关子查询?“对大多数人来说,将语句表示为左、右或内部联接会更容易理解和维护”--我不确定这对大多数人来说是否正确,当然不适合我,例如,我更喜欢使用
EXISTS(subquery)
而不是join编写子查询,同上,我注意到很多人都喜欢在(subquery)
中使用
。有没有办法使用join在oracle中编写相关子查询?