为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

互换的青春 2019-06-13 17:23:31
SQL从表A中排除使用select*[除Columna]的列?我们都知道要从一个表中选择所有列,我们可以使用SELECT * FROM tableA是否有一种不指定所有列而将列从表中排除的方法?SELECT * [except columnA] FROM tableA我知道的唯一方法是手动指定所有列并排除不需要的列。这真的很费时,所以我正在寻找节省时间和精力的方法,以及如果表中有更多/更少列的话,将来的维护。谢谢!
查看完整描述

3 回答

?
DIEA

TA贡献1820条经验 获得超2个赞

我同意每个人.。但如果我要做这样的事,我可能会这样做:


/* 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


查看完整回答
反对 回复 2019-06-13
?
萧十郎

TA贡献1815条经验 获得超13个赞

没有。

维护-轻型最佳实践是只指定所需的列。

至少有两个理由:

  • 这使得客户端和数据库之间的合同稳定。每次都是同样的数据
  • 性能、覆盖指标

编辑(2011年7月):

如果从对象资源管理器拖动Columns节点,它会在查询窗口中为您放置一个csv列表,以实现您的目标之一。


查看完整回答
反对 回复 2019-06-13
?
慕的地8271018

TA贡献1796条经验 获得超4个赞

在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);


查看完整回答
反对 回复 2019-06-13
  • 3 回答
  • 0 关注
  • 1516 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信