在制定选择查询时需要帮助。
我有一个包含 50 列的表,现在我不想从该表中检索所有列。
即,假设我有 col 喜欢:a、b、c、d 和我想要一个没有列 c、d 的选择查询。我知道使用简单select a, b from table
会达到目的,但想想当有 50 列并且您只想从中检索 40 列时。
sql server 语法中是否有任何特定的 T-SQL 可以完全满足要求。
在制定选择查询时需要帮助。
我有一个包含 50 列的表,现在我不想从该表中检索所有列。
即,假设我有 col 喜欢:a、b、c、d 和我想要一个没有列 c、d 的选择查询。我知道使用简单select a, b from table
会达到目的,但想想当有 50 列并且您只想从中检索 40 列时。
sql server 语法中是否有任何特定的 T-SQL 可以完全满足要求。
不,您不能说“选择除 c,d 之外的所有列”,但如果您使用对象资源管理器,请展开表或视图节点,展开表或视图,然后将“列”文件夹拖到查询窗口上。现在您可以从列表中删除您不想要的 10 列,这应该比输入其他 40 列更容易。
实际上,可以选择除您指定的某些列之外的所有列。这不是你通常应该做的事情。
例如:
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')
通常,最好遵循其他答案中给出的示例。
你不能这样做Select * except c,d from table
。您必须手动编写每个列名。如果您不想手动编写每个列名,可以Script Table As
通过右键单击对象资源管理器中的表或视图来使用,如下所示:
然后您将在新查询编辑器窗口SELECT
中获得整个查询,然后删除不需要的列,如下所示:
如果您经常使用它,创建视图会有所帮助。虽然你必须做一次。
单击新建查询- 键入“从表中选择 *”。用光标突出显示文本。右键单击突出显示,在 Editor 中选择 Design Query,清除不需要的列的复选标记。单击确定。我发现一旦习惯了在编辑器中编写代码会非常快。比等待 Intellisense 尝试弄清楚您要做什么要快得多。
当您以这种方式编写查询时,拥有像Poor Man's T-SQL Formatter这样的格式化工具确实很有帮助,因为编辑器生成的代码通常是不可读的。