2016-09-19 5 views
-1

これは私が(統計情報が最新のものであることを仮定して)SQL Developerでは、データベース内のすべてのテーブルのすべての列の異なる値を見つける方法は?

SET SERVEROUTPUT ON; 

DECLARE 
    sql_query VARCHAR2(32767); 

BEGIN 
    FOR t IN (SELECT table_name, column_name FROM user_tab_columns) 
    LOOP 
     EXECUTE IMMEDIATE sql_query := 'SELECT * FROM ' || t.table_name ; 
    END LOOP;  
END; 
+0

あなたはすべてのテーブルのすべての列の明確なNAMESを意味していますか?また、あなたの試みでは、user_tab_columnsテーブルを使用しました。それは1人のユーザのテーブルだけですが、あなたのタイトルではすべてのテーブルがデータベース内にあります。必要なものとその理由を明確にしてください。 (**理由**はしばしば非常に役に立ちます!) – mathguy

+1

あなたは、** select **キーワードの隣にクエリに** distinct **キーワードを追加することができます。例えば。 'select distinct column_name from table_name' – Pat

+0

私は、すべてのテーブルのすべての列に別個の値が必要です。 user_tab_columnsを使用して列を取得しました。それは関連する仕事ではなく、私たちはちょうど割り当てを持っていました。私はこれを1週間試していましたが、列名を取得する方法を解読することはできませんでした。私は各テーブルでカウントを得ることができますが、別の列の値を使用するためにテーブルに入ることができません。 – arunbabu

答えて

1

このクエリはあなたに、列ごとに個別値の数を与えるしようとしていた何でした。

select owner, table_name, column_name, num_distinct 
from all_tab_col_statistics 

おそらくこれで十分でしょう。

あなたが異なる値を持っている必要がある場合は、次のようにスクリプト内sql_queryのparamを変更する必要があります。

EXECUTE IMMEDIATE sql_query := 'SELECT distinct '|| t.column_name || 
     ' FROM ' || t.table_name ; 
+1

'all_tab_col_statistics'が最新の場合にのみこれが正確であることに言及してください。 –

+0

@Frank Ockenfuss、Ok、確かに、ありがとう。 –

関連する問題