2012-08-28 53 views
1

需要一個幫助來制定選擇查詢。在T中選擇查詢Sql

我有在它50列的表,現在我想找回並不是所有從該表中的列。

即,說我有山坳,如:A,B,C,d &我想不列c,d選擇查詢。我知道僅僅使用select a, b from table就可以達到這個目的,但是當有50列的時候想想,並且只想從中檢索出40個。

是否有任何具體的T-SQL在SQL Server語法可用,將充分填補的需求。

+0

是否要選擇「可能的50列中的前40列」? – nurettin

回答

5

不,你不能說「選擇除C,d所有列」,但如果您使用對象資源管理器中,展開表或視圖節點,展開您的表或視圖,並拖動「列」文件夾到查詢窗口。現在,您可以從列表中刪除了10列,你不想要的,這應該是比打字了其他40

enter image description here

1

你不能做到像Select * except c,d from table容易。您必須手動編寫每個列名稱。如果你不想寫每個列名手動您可以通過右鍵點擊視圖在對象資源管理器使用Script Table As這樣的:

enter image description here

然後你會得到整個SELECT查詢在新建查詢編輯器窗口然後刪除不需要的列是這樣的:

enter image description here

0

點擊新建查詢 - 輸入 「select * from表」。用光標突出顯示文本。右鍵突出顯示,在編輯器中選擇設計查詢,清除您不想要的列的複選標記。點擊確定。我發現在編輯器中編寫代碼可以非常快速,一旦你習慣了它。比等待Intellisense快得多,試圖找出你正在嘗試做什麼。

當你編寫查詢這樣,它確實有助於有像Poor Man's T-SQL Formatter格式化工具,因爲由編輯器生成的代碼通常是不可讀。

2

其實,這是可能選擇,除非你指定某幾個中的所有列。這只是你通常不應該做的事情。

例如:

DECLARE @columns VARCHAR(MAX) 
SELECT @columns = COALESCE(@columns+',' ,'') + name 
FROM MyDatabase.sys.columns 
WHERE object_id = (
    SELECT object_id 
    FROM MyDatabase.sys.tables 
    WHERE name='MyTable' 
) 
    AND name NOT IN ('MyColumn1','MyColumn2') 
PRINT @columns 

EXEC('SELECT '[email protected]+' FROM MyTable') 

一般來說,最好是按照其他的答案給出的例子。

1

如果您經常使用它,創建視圖將有所幫助。 雖然你必須做一次。