查询类型之间有什么区别?

时间:2015-08-13 11:41:28

标签: sql

querysub-querycorrelated sub-query之间有什么区别?

我应该何时使用另一个?

1 个答案:

答案 0 :(得分:1)

子查询是查询中的查询。例如,这在IN子句和EXISTS子句中使用。

示例1:

从a;

中选择x,y,(从b中选择max(z))

这里我们感兴趣的是表b中的一个值:最大值z。我们在SELECT子句中使用子查询,而不是连接这两个表。

示例2:

从a.x中选择*(从b中选择y);

我们从表a中选择b中相应记录所在的所有记录。

示例3:

从存在的地方选择*(从*中选择*,其中y = a.x);

同样,我们从表a中选择b中相应记录所在的所有记录。

示例3使用相关子查询。这意味着在该查询中我们引用了来自外部的值(a.x)。示例2对非相关子查询执行相同的操作。

关于“何时需要”:通常有几种方法可以在SQL中获取所需的数据。使用您认为最好的方法(通常是最易读的方法)。有时这会涉及子查询,有时不会,有时你会使用相关的子查询,有时是非相关的子查询。没关系;使用合适的东西。