1

在制定选择查询时需要帮助。

我有一个包含 50 列的表,现在我不想从该表中检索所有列。

即,假设我有 col 喜欢:a、b、c、d 和我想要一个没有列 c、d 的选择查询。我知道使用简单select a, b from table会达到目的,但想想当有 50 列并且您只想从中检索 40 列时。

sql server 语法中是否有任何特定的 T-SQL 可以完全满足要求。

4

5 回答 5

5

不,您不能说“选择除 c,d 之外的所有列”,但如果您使用对象资源管理器,请展开表或视图节点,展开表或视图,然后将“列”文件夹拖到查询窗口上。现在您可以从列表中删除您不想要的 10 列,这应该比输入其他 40 列更容易。

在此处输入图像描述

于 2012-08-28T13:48:20.757 回答
2

实际上,可以选择除您指定的某些列之外的所有列。这不是你通常应该做的事情。

例如:

DECLARE @columns VARCHAR(MAX)
SELECT @columns = COALESCE(@columns+',' ,'') + name
FROM MyDatabase.sys.columns
WHERE object_id = (
    SELECT object_id
    FROM MyDatabase.sys.tables
    WHERE name='MyTable'
)
    AND name NOT IN ('MyColumn1','MyColumn2')
PRINT @columns

EXEC('SELECT '+@columns+' FROM MyTable')

通常,最好遵循其他答案中给出的示例。

于 2012-08-28T17:48:27.507 回答
1

你不能这样做Select * except c,d from table。您必须手动编写每个列名。如果您不想手动编写每个列名,可以Script Table As通过右键单击对象资源管理器中的视图来使用,如下所示:

在此处输入图像描述

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

在此处输入图像描述

于 2012-08-28T13:51:33.560 回答
1

如果您经常使用它,创建视图会有所帮助。虽然你必须做一次。

于 2012-08-30T22:57:45.053 回答
0

单击新建查询- 键入“从表中选择 *”。用光标突出显示文本。右键单击突出显示,在 Editor 中选择 Design Query,清除不需要的列的复选标记。单击确定。我发现一旦习惯了在编辑器中编写代码会非常快。比等待 Intellisense 尝试弄清楚您要做什么要快得多。

当您以这种方式编写查询时,拥有像Poor Man's T-SQL Formatter这样的格式化工具确实很有帮助,因为编辑器生成的代码通常是不可读的。

于 2012-08-28T15:46:09.373 回答