2016-10-04 69 views
1

是否可以從我的表格中選擇前20列,而不必在選擇中列出每列?選擇前20列

當我進行選擇時,列總是以相同的方式排序,所以必須有一些底層訂單。

+1

是不是真的那麼難,只是命名20列? – tbone

+0

構建它動態查詢'all_tab_columns' –

+1

如果你正在做它同一張表的很多,只是創建一個視圖 – thatjeffsmith

回答

-1

在SQL Server數據庫中有一個名爲sysColumns的表,它記錄了每個表中的所有列。我認爲這是一個SQL標準,也應該在Oracle中。

編輯:感謝來自@ davegreen100的評論,此表在Oracle中,但名爲DBA_TAB_COLUMNS

嘗試運行Select * from DBA_TAB_COLUMNS並查看結果是什麼,並從那裏開始工作。

如果它的存在(在Oracle),你最終會與一些落得像

Select name from DBA_TAB_COLUMNS 
Where id = @tableId -- <--- the id of the table 
    and colOrder <= 20 

您最終的SQL將可能不得不使用從上述

+1

在oracle中,表格是DBA_TAB_COLUMNS – davegreen100

1

下面的輸出動態地生成查詢將爲您形成SQL。它使用字典表all_tab_columns來獲取表的列名。

SELECT ' SELECT ' 
    || REPLACE(LISTAGG(column_name,',') WITHIN GROUP(ORDER BY column_id),',',',' 
    ||CHR(10)) 
    || ' FROM YOUR_TABLE' 
FROM all_tab_columns 
WHERE owner ='YOUR_SCHEMA_NAME' 
AND table_name='YOUR_TABLE_NAME' 
AND column_id <= 20; 
+0

謝謝,這會在查詢結果中產生我需要複製的語法,粘貼到工作表中並運行。是否有可能添加更多的代碼到上面這意味着它也會運行查詢? – amsbam1

+0

你如何執行查詢?在SQL Developer中? –

+0

是的,SQL開發人員。 – amsbam1

0

你可以使用列的索引,而不是列名稱,如選擇0,1,2,......

+0

你試過一次嗎? –

+1

是的,但是沒有給出輸出列名稱的問題 –

相關問題