SQL使用SELECT * [columnA除外] FROM tableA排除列?

咱們都知道要從表中選擇全部列,咱們可使用 數據庫

SELECT * FROM tableA

有沒有一種方法能夠在不指定全部列的狀況下從表中排除列? 編輯器

SELECT * [except columnA] FROM tableA

我知道的惟一方法是手動指定全部列,並排除不須要的列。 這確實很耗時,所以我正在尋找節省時間和精力的方法,而且在表包含更多/更少列的狀況下,還能夠進行未來的維護。 this


#1樓

若是您不想手動輸入每一個列名,則能夠經過右鍵單擊或在SSMS中 查看來使用「 Script Table As ,以下所示: spa

在此處輸入圖片說明

而後,您將在「 新建查詢編輯器」窗口中得到整個選擇查詢,而後刪除不須要的列,以下所示: code

在此處輸入圖片說明

完成 圖片


#2樓

我贊成全部人的觀點...可是,若是我要作這樣的事情,我可能會這樣: ip

/* Get the data into a temp table */
SELECT * INTO #TempTable
FROM YourTable
/* Drop the columns that are not needed */
ALTER TABLE #TempTable
DROP COLUMN ColumnToDrop
/* Get results and drop temp table */
SELECT * FROM #TempTable
DROP TABLE #TempTable

#3樓

在SSMS中, IntelliSenseAliasing是一種更簡單的方法。 嘗試這個 開發

  1. 右鍵單擊文本編輯器,並確保已啓用IntelliSense
  2. 使用別名[SELECT t。* FROM tablename t]鍵入查詢。
  3. 轉到文本t。*並刪除* ,SSMS將自動列出別名表f的列。
而後,您能夠快速 指定 所需的列,而沒必要使用SSMS將選擇內容寫入另外一個腳本,而後執行更多複製/粘貼操做。 我常常用這個。


#4樓

若是咱們談論的是過程,則可使用此技巧來生成一個新查詢並當即執行it

SELECT LISTAGG((column_name), ', ') WITHIN GROUP (ORDER BY column_id)
INTO var_list_of_columns
FROM ALL_TAB_COLUMNS
WHERE table_name = 'PUT_HERE_YOUR_TABLE'
AND column_name NOT IN ('dont_want_this_column','neither_this_one','etc_column');

#5樓

我知道這有點老了,但我剛遇到一樣的問題,正在尋找答案。 而後,我讓一位高級開發人員向我展現了一個很是簡單的技巧。 io

若是使用的是Management Studio查詢編輯器,請展開數據庫,而後展開要從中選擇的表,以即可以看到columns文件夾。

在您的select語句中,只需突出顯示上方引用的列文件夾並將其拖放到查詢窗口中便可。 它將粘貼表的全部列,而後只需從列列表中刪除標識列便可。

相關文章
相關標籤/搜索