在T Sql中选择Query

时间:2012-08-28 13:46:35

标签: sql-server sql-server-2008 tsql

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

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

,也就是说,我喜欢:a,b,c,d&我想要一个没有列c,d的选择查询。我知道只使用select a, b from table就可以达到目的,但是当有50列并且你只想从它们中检索40时,请考虑。

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

5 个答案:

答案 0 :(得分:5)

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

enter image description here

答案 1 :(得分: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')

一般来说,最好按照其他答案中给出的例子进行操作。

答案 2 :(得分:1)

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

  

enter image description here

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

  

enter image description here

答案 3 :(得分:1)

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

答案 4 :(得分:0)

点击新查询 - 输入“select * from table”。用光标突出显示文本。右键单击突出显示,选择编辑器中的设计查询,清除不需要的列的复选标记。点击确定。我发现,一旦你习惯了,编辑器中的代码就可以非常快。比等待Intellisense快得多,试着找出你想要做的事情。

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