具有别名的SQL嵌套查询

时间:2018-06-22 08:39:06

标签: sql

任何人都可以解释该查询的执行方式,并且它是相关的嵌套查询吗?

select distinct id 
from activity ac3 
where ac3.activity_id = 151 and ac3.id in
    (select ac2.id from activity ac2 where ac2.activity_id = 150)

3 个答案:

答案 0 :(得分:0)

它不是相关子查询。外部查询和嵌套查询之间没有链接。请参阅相关子查询here的示例。

答案 1 :(得分:0)

嵌套子查询可以嵌套在其他子查询中,它是一个select语句,嵌套在另一个select语句中,并将返回中间结果。 SQL首先执行最里面的子查询,然后再执行下一级。子查询的结果是主查询的查询条件。

查询执行如下 主查询->子查询->子子查询等等。

相关子查询,子查询使用外部查询中的值。对于外部查询处理的每一行,子查询都会被评估一次。这意味着子查询被重复执行,对于外部查询可能选择的每一行,都会重复执行一次。

这是不相关的子查询。

答案 2 :(得分:0)

这不是一个相关查询。如果子查询依赖于最外部查询的结果,则它是一个相关查询。您需要了解更多。

这是一个简单的子查询。

执行计划select ac2.id from activity ac2 where ac2.activity_id = 150;

此查询将首先执行,主查询依赖于此查询。