如何从视图中删除列

Posted

技术标签:

【中文标题】如何从视图中删除列【英文标题】:How to remove column from a view 【发布时间】:2020-07-06 12:06:00 【问题描述】:

我正在使用 MS SQL 服务器(2017,Standart Edition-64)。我从我的数据库表中删除了一些列,但这些列仍然出现在表视图中,这给我带来了一些性能问题。 我需要从视图中删除列。

我知道视图没有像表一样的 DROP COLUMN 语句。另外 - 似乎 ALTER VIEW 不提供删除列的选项。

视图有特定的依赖和触发器,所以我不能简单地删除并创建一个新的。也许有一些方法可以重新创建视图删除不需要的列,但保留所有其他属性?

【问题讨论】:

您需要使用仅包含所需列的新定义重新定义视图(使用alter view)。 VIEW 是由SELECT 语句定义的伪表。如果您不想在 VIEW 中显示列,则需要通过不在视图定义的(最终)SELECT 子句中包含该列来将其从其定义中删除。 【参考方案1】:
    create view test001 as
    select name,company from [dbo].test
    
    alter view test001 as
    select name,company,address from [dbo].test

【讨论】:

以上是关于如何从视图中删除列的主要内容,如果未能解决你的问题,请参考以下文章

选择时如何从配置单元视图中丢弃分区列?

如何从数据视图中选择单个分组列?

phpmyadmin:从多个表创建的视图现在 id 字段不是唯一的,无法编辑,更新删除

如何向视图添加列?

如何从列标题菜单中删除列

BigQuery:从视图中查询时出错