gpt4 book ai didi

sql - Oracle 将如何处理 where 子句条件与具有恒定结果的子查询进行比较?

转载 作者:行者123 更新时间:2023-12-03 17:19:01 26 4
gpt4 key购买 nike

假设我有以下内容:

select primary_id
from myschema.table_a
where row_changed_date > ( select last_refreshed
from myschema.last_refresh lr
where asset_type = 0 );

子查询的结果不会在 Assets 之间改变。从技术上讲,我想直接与常量值进行比较,但我不想运行单独的查询来获取该常量。 Oracle 会为每次迭代运行子查询吗?有一个更好的方法吗?

最佳答案

您需要确保您的子查询返回单行,或使用合格的比较:

WHERE row_changed_date > ALL ( SELECT last_refreshed ... )

或者:
WHERE row_changed_date > (SELECT MAX(last_refreshed) ...)

假设 asset_typelast_refresh 中的一列表,然后 Oracle 将计算一次子查询。如果它实际上是 table_a 中的一列表,那么你有一个相关的子查询;必须按行评估。

这个答案实际上与 DBMS 无关——规则适用于 Oracle 以及其他 SQL DBMS。

关于sql - Oracle 将如何处理 where 子句条件与具有恒定结果的子查询进行比较?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4454221/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com