我在表中有100列,我想列出除特定列之外的99列,如何排除列名稱?SQL - 從SELECT查詢中排除列
5
A
回答
5
SELECT column_1, column_2, column_3,
/* ...the list of columns 4-97, not shown in this example... */,
column_98, column_99
FROM table
有沒有更簡單的方法來做到這一點(可能通過設計):你需要明確列出你想要檢索的每一列。
儘管寫起來很麻煩,但實際上這是一件好事:在產品代碼中使用SELECT *
不鼓勵(出於性能和可維護性原因) - 請參閱this question。
6
Tutorial D關係數據庫查詢語言確實允許使用ALL BUT
根據要刪除的屬性來表示投影,但在SQL中沒有允許您這樣做的等效語法。你需要明確列出你想要的特定的。
如果您通常需要同一組列,則可以使用View。
2
你不行。從理論上講,你可能會涉及到動態SQL這裏 - 一些過程將循環遍歷你的表的所有列(例如,all_tabs_columns
Oracle中的字典視圖列出了所有表的所有列),並形成一個查詢select c1, c2 c3 ... c99 from tab
,但是我強烈阻止你這樣做。會爲您節省幾行代碼,但難以維護。 :)
1
試試這個。
DROP TABLE #MY_TEMP_TABLE
CREATE TABLE #MY_TEMP_TABLE
(
Column_1 int NULL,
Column_2 varchar(10) NULL,
Column_3 datetime NULL
)
INSERT INTO #MY_TEMP_TABLE(Column_1, Column_2, Column_3)
SELECT 1, 'a', GETDATE()
UNION SELECT 2, 'b', GETDATE()
UNION SELECT 3, 'c', GETDATE()
UNION SELECT 4, 'd', GETDATE()
DECLARE @dSQL nvarchar(1000)
SELECT @dSQL = 'SELECT TOP 10 '
SELECT @dSQL = @dSQL + LEFT(nst.ColumnList, LEN(nst.ColumnList)-1) --AS 'List'
FROM (SELECT so.id
FROM TEMPDB..SYSOBJECTS so
WHERE so.name LIKE '#MY_TEMP_TABLE%'
AND so.type = 'u') so
CROSS APPLY (SELECT sc.Name + ', '
FROM TEMPDB..SYSCOLUMNS sc
WHERE sc.id = so.id
AND sc.colid <> 3
FOR XML PATH('')) nst
(ColumnList)
SELECT @dSQL = @dSQL + ' FROM #MY_TEMP_TABLE'
EXEC sp_executesql @dSQL
相關問題
- 1. SQL SELECT查詢排除值
- 2. 在select查詢中排除SQL
- 3. 排除開始的話從SELECT查詢
- 4. SQL SELECT查詢從SELECT查詢
- 5. 從SQL SELECT查詢
- 6. 從SQL查詢中排除記錄
- 7. SQL select語句排除列的排序
- 8. SQL SELECT查詢中
- 9. SQL Server - 在SELECT查詢中將一列除以另一列
- 10. 從查詢排除
- 11. 排除從查詢
- 12. 從MySQL SELECT WITH ROLLUP中排除列?
- 13. SQL SELECT查詢
- 14. SQL Select查詢
- 15. SQL SELECT查詢
- 16. SQL SELECT查詢
- 17. SQL和SELECT查詢暫時排
- 18. SQL排除子查詢
- 19. SQL查詢來排除行
- 20. SQL查詢排除值
- 21. SQL加入&排除查詢
- 22. MySQL SELECT查詢 - 排除某些行
- 23. 從SQL中的SELECT查詢更新
- 24. 從Select語句中刪除子查詢?
- 25. 如何從mysql查詢中排除表?
- 26. 排除SQL查詢中的內容
- 27. 排除在SQL Server 2008中查詢
- 28. SQL查詢轉換列排
- 29. DB2中的SQL SELECT查詢
- 30. SQL Select子查詢
您應該添加一些元文本 – keyser 2012-10-26 14:17:55