select unique owner
from all_tables
where sysdate-50 < (select last_analyzed from dual);
我刚刚编写了上面的代码,结果与下面的代码有所不同。
select unique owner from all_tables;
但是,如果我单独执行(select last_analyzed from dual
),则会弹出错误。
我很困惑如何生成结果。
答案 0 :(得分:2)
您的查询有一个不必要的子查询。这相当于:
select unique owner from all_tables T
where sysdate-50 < T.last_analyzed;
我希望这可以帮助您了解您获得的结果。
答案 1 :(得分:2)
它将last_analysed
作为all_tables
的列,因为dual
中没有这样的列 - 我认为这是范围的影响。如果用别名写的话会更清楚:
select unique owner
from all_tables t
where sysdate-50 < (select t.last_analyzed from dual);
您根本不需要子查询,您可以这样做:
select unique owner
from all_tables
where last_analyzed >= sysdate-50;
(我怀疑这是错误的方式;如果你正在寻找陈旧的统计数据,我认为你想要< sysdate-50
)。
答案 2 :(得分:0)
last_analyzed是具有日期值的all_tables的列之一。您无法单独运行子查询