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

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

SELECT * FROM tableA

有没有一种方法可以在不指定所有列的情况下从表中排除列?

SELECT * [except columnA] FROM tableA

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

谢谢!


我同意每个人......但如果我要做这样的事情,我可以这样做:

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

没有。

维护指示灯的最佳做法是仅指定所需的列。

至少有两个原因:

  • 这使得您的客户端和数据库之间的合同稳定。 相同的数据,每次
  • 性能,涵盖索引
  • 编辑(2011年7月):

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


    在SQL(SQL Server)中执行此操作的自动方法是:

    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);
    
    链接地址: http://www.djcxy.com/p/93837.html

    上一篇: SQL exclude a column using SELECT * [except columnA] FROM tableA?

    下一篇: select column names of current table