0
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) を個別に実行すると、エラーがポップアップします。

結果がどのように生成されるか混乱しています。

4

3 に答える 3

2

にはそのような列がないため、 からlast_analysed列としてを取得しています。これはスコープの効果だと思います。エイリアスで書かれている場合はより明確です:all_tablesdual

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)。

于 2012-07-20T08:21:45.977 に答える
2

クエリに不要なサブクエリがあります。これは同等です:

select unique owner from all_tables T
where sysdate-50 < T.last_analyzed;
于 2012-07-20T08:21:02.547 に答える
0

last_analyzedは、日付値を持つall_tablesの列の1つです。サブクエリを単独で実行することはできません

于 2012-07-20T08:16:57.233 に答える