2016-09-19 54 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

你的意思是所有表的所有列不同的名稱?另外,在你的嘗試中,你使用了user_tab_columns表;那只是一個用戶的表格,但是在你的標題中你說過所有的表格都在數據庫中。請說明你需要什麼,以及爲什麼。 (**爲什麼**通常非常有幫助!) – mathguy

+1

您可以在** select **關鍵字旁邊的查詢中添加** distinct **關鍵字。例如。 'select table_name' select distinct column_name' – Pat

+0

我想要所有表的所有列中的不同值。我使用user_tab_columns來獲取列。這不是任何工作相關的,我們只是有一個任務,我試了一個星期,但無法破解如何獲得列名。我能夠在每個表格中獲得計數,但無法進入表格以使用不同的列值。 – 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,好的,謝謝。 –

相關問題