【发布时间】:2016-09-06 03:34:25
【问题描述】:
假设我有这个复杂的查询 sn-p
select id, name, count(*)
from items
join ...
where <where_1st>
group by ...
having <having_1st>
来自items的表定义
items
-----
id ID
name varchar2
quantity number
price number
...
如何将该查询存储到一个变量中,以便我可以使用该查询中的一个字段,同时以union all 格式加入该查询。像这样。
最终查询:
select id, name, count(*)
from items
join ...
where <where_2nd> and id not in (<first_query>.id/s)
group by ...
having <having_2nd>
union all
<first query>;
这种格式可以做吗?
DECLARE
<variable_for_1st_query>
BEGIN
<final_query>
END;
注意:查询内容广泛且复杂。采用这种方法可以将计算时间减少一半。
【问题讨论】:
-
不太确定您要实现什么...您真的需要变量,还是只想降低第二个查询的复杂性?如果您不坚持使用变量,您可以使用
view,或使用with data as (<first query>)... -
供以后参考不要重复发布相同的问题。这令人困惑,只会浪费人们的时间。相反,如果您没有得到正确答案,您应该编辑原始问题以改进它。
-
要删除另一个。我很抱歉。
标签: oracle performance plsql query-optimization