协慌网

登录 贡献 社区

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 列列表,从而实现您的目标之一

如果您不想手动输入每个列名,则可以通过右键单击或在SSMS 中查看Script Table As ,如下所示:

在此处输入图片说明

然后,您将在 “新建查询编辑器” 窗口中获得整个选择查询,然后删除不需要的列,如下所示:

在此处输入图片说明

完毕