在制定选择查询时需要一个帮助。
我有一个包含50列的表,现在我想从该表中检索不是所有列。
,也就是说,我喜欢:a,b,c,d&我想要一个没有列c,d的选择查询。我知道只使用select a, b from table
就可以达到目的,但是当有50列并且你只想从它们中检索40时,请考虑。
sql server语法中是否有任何特定的T-SQL可以满足要求。
答案 0 :(得分:5)
不,您不能说“选择除c,d之外的所有列”,但如果使用对象资源管理器,请展开表或视图节点,展开表或视图,然后将“列”文件夹拖到查询窗口中。现在您可以从列表中删除您不想要的10列,这比输入其他40列要容易。
答案 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
,如下所示:
然后,您将在新查询编辑器窗口中获得整个SELECT
查询,然后删除不需要的列,如下所示:
答案 3 :(得分:1)
如果您经常使用它,创建视图将有所帮助。 虽然你必须这样做一次。
答案 4 :(得分:0)
点击新查询 - 输入“select * from table”。用光标突出显示文本。右键单击突出显示,选择编辑器中的设计查询,清除不需要的列的复选标记。点击确定。我发现,一旦你习惯了,编辑器中的代码就可以非常快。比等待Intellisense快得多,试着找出你想要做的事情。
当您以这种方式编写查询时,拥有像Poor Man's T-SQL Formatter这样的格式化工具确实很有用,因为编辑器生成的代码通常是不可读的。