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

咱们都知道要从表中选择全部列,咱们可使用 数据库

SELECT * FROM tableA

有没有一种方法能够在不指定全部列的状况下从表中排除列? 编辑器

SELECT * [except columnA] FROM tableA

我知道的惟一方法是手动指定全部列,并排除不须要的列。 这确实很耗时,所以我正在寻找节省时间和精力的方法,而且在表包含更多/更少列的状况下,还能够进行未来的维护。 this


#1楼

若是您不想手动输入每一个列名,则能够经过右键单击或在SSMS中 查看来使用“ Script Table As ,以下所示: spa

在此处输入图片说明

而后,您将在“ 新建查询编辑器”窗口中得到整个选择查询,而后删除不须要的列,以下所示: code

在此处输入图片说明

完成 图片


#2楼

我赞成全部人的观点...可是,若是我要作这样的事情,我可能会这样: ip

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

#3楼

在SSMS中, IntelliSenseAliasing是一种更简单的方法。 尝试这个 开发

  1. 右键单击文本编辑器,并确保已启用IntelliSense
  2. 使用别名[SELECT t。* FROM tablename t]键入查询。
  3. 转到文本t。*并删除* ,SSMS将自动列出别名表f的列。
而后,您能够快速 指定 所需的列,而没必要使用SSMS将选择内容写入另外一个脚本,而后执行更多复制/粘贴操做。 我常常用这个。


#4楼

若是咱们谈论的是过程,则可使用此技巧来生成一个新查询并当即执行it

SELECT LISTAGG((column_name), ', ') WITHIN GROUP (ORDER BY column_id)
INTO var_list_of_columns
FROM ALL_TAB_COLUMNS
WHERE table_name = 'PUT_HERE_YOUR_TABLE'
AND column_name NOT IN ('dont_want_this_column','neither_this_one','etc_column');

#5楼

我知道这有点老了,但我刚遇到一样的问题,正在寻找答案。 而后,我让一位高级开发人员向我展现了一个很是简单的技巧。 io

若是使用的是Management Studio查询编辑器,请展开数据库,而后展开要从中选择的表,以即可以看到columns文件夹。

在您的select语句中,只需突出显示上方引用的列文件夹并将其拖放到查询窗口中便可。 它将粘贴表的全部列,而后只需从列列表中删除标识列便可。

相关文章
相关标签/搜索