query
,sub-query
和correlated sub-query
之间有什么区别?
我应该何时使用另一个?
答案 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中获取所需的数据。使用您认为最好的方法(通常是最易读的方法)。有时这会涉及子查询,有时不会,有时你会使用相关的子查询,有时是非相关的子查询。没关系;使用合适的东西。