Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 此查询包括相关子查询还是非相关子查询?_Sql_Oracle Sqldeveloper - Fatal编程技术网

Sql 此查询包括相关子查询还是非相关子查询?

Sql 此查询包括相关子查询还是非相关子查询?,sql,oracle-sqldeveloper,Sql,Oracle Sqldeveloper,因此,我编写了一个简单的查询,它为在property_usage表中只显示一次的属性提供ID,并为其关联的使用类型提供代码。因为我不想包含一个列来显示每个属性ID在property_usage表中显示的次数,所以我编写了两个子查询来获取只显示一次的所有属性ID的列表。然后,我使用这些子查询的结果(一列PropertyID)过滤掉那些在表中多次显示的属性 问题是: select pu.property_id, pu.usage_type_id from acres_final_40.proper

因此,我编写了一个简单的查询,它为在property_usage表中只显示一次的属性提供ID,并为其关联的使用类型提供代码。因为我不想包含一个列来显示每个属性ID在property_usage表中显示的次数,所以我编写了两个子查询来获取只显示一次的所有属性ID的列表。然后,我使用这些子查询的结果(一列PropertyID)过滤掉那些在表中多次显示的属性

问题是:

select pu.property_id, pu.usage_type_id 
from acres_final_40.property_usage pu
where pu.property_id not in 
  (select multiple_use_properties 
  from 
    (select pu.property_id multiple_use_properties, count(pu.property_id) 
    from acres_final_40.property_usage pu
    group by pu.property_id having count(pu.property_id) > 1))
order by pu.property_id;
我的问题是:最内层的子查询与最外层的查询相关还是不相关

我有以下想法,请看下面的一段,但我想确定我的看法是否正确。我正在自学这些东西,没有人可以亲自问我

我的感觉是不是,因为看起来最外层查询的pu.propertyID列不是传递到最内层查询的值。看起来从技术上讲,最里面的查询可能是一个派生表,在这种情况下,我的代码是松散的,因为我没有在SELECT语句的FROM子句中别名表名

在SQL数据库查询中,相关子查询(也称为同步子查询)是嵌套在另一个查询中的子查询,该查询使用外部查询中的值

嗯。我的

您的没有,因此它不是相关子查询。基本上,如果您可以切掉子查询并将其作为独立查询运行,而不需要外部上下文,那么它肯定是不相关的。这可以在你的情况下完成

顺便说一句,您可能可以使用not exists子句重写它,以检查是否存在具有相同PK但另一个属性id的另一条记录,并获得比使用count更好的查询计划。不过,这是我的猜测;只有解释计划才能说明是否有好处