SQL从表A中排除使用select*[除Columna]的列?

SQL从表A中排除使用select*[除Columna]的列?

我们都知道要从一个表中选择所有列,我们可以使用

SELECT * FROM tableA

是否有一种不指定所有列而将列从表中排除的方法?

SELECT * [except columnA] FROM tableA

我知道的唯一方法是手动指定所有列并排除不需要的列。这真的很费时,所以我正在寻找节省时间和精力的方法,以及如果表中有更多/更少列的话,将来的维护。

谢谢!


互换的青春
浏览 1517回答 3
3回答

DIEA

我同意每个人.。但如果我要做这样的事,我可能会这样做:/* Get the data into a temp table */SELECT * INTO #TempTableFROM YourTable/* Drop the columns that are not needed */ALTER TABLE #TempTableDROP COLUMN ColumnToDrop/* Get results and drop temp table */SELECT * FROM #TempTableDROP TABLE #TempTable

萧十郎

没有。维护-轻型最佳实践是只指定所需的列。至少有两个理由:这使得客户端和数据库之间的合同稳定。每次都是同样的数据性能、覆盖指标编辑(2011年7月):如果从对象资源管理器拖动Columns节点,它会在查询窗口中为您放置一个csv列表,以实现您的目标之一。

慕的地8271018

在SQL(SQLServer)中实现此操作的自动化方法是:declare @cols varchar(max), @query varchar(max);SELECT  @cols = STUFF    (         (              SELECT DISTINCT '], [' + name            FROM sys.columns            where object_id = (                 select top 1 object_id from sys.objects                where name = 'MyTable'             )             and name not in ('ColumnIDontWant1', 'ColumnIDontWant2')             FOR XML PATH('')         ), 1, 2, ''     ) + ']';SELECT @query = 'select ' + @cols + ' from MyTable';  EXEC (@query);
打开App,查看更多内容
随时随地看视频慕课网APP