【发布时间】:2012-05-10 01:41:12
【问题描述】:
这是我的看法:
Create View [MyView] as
(
Select col1, col2, col3 From Table1
UnionAll
Select col1, col2, col3 From Table2
)
我需要添加一个名为 Id 的新列,并且我需要此列是唯一的,所以我想添加新列作为标识。我必须提到这个视图返回了大量数据,所以我需要一种性能良好的方法,而且我使用两个 select 查询和 union all 我认为这可能有些复杂,你有什么建议?
【问题讨论】:
-
SQL Server 中的视图只是一个“存储查询”——它在数据库中没有任何物理表示。因此,您不能将标识列添加到视图中
-
id不稳定是否可以(如果Table1增长,Table2的第一个id将与以前不同)? -
@marc_s - OP 可能只是在这里寻找
ROW_NUMBER类型功能。 -
@marc_s - 没错,这就是为什么我问稳定的 ID 是否重要...
-
如果您想要一个“稳定”的 id,这意味着对于视图中的每一行,您始终拥有相同的 id,您必须将 ID 存储在与保存该行的表相关的某个位置。视图不是您可以存储此类信息的地方,因此您需要一个表,或者您需要在用于构建视图的表中添加一列。
标签: sql sql-server sql-server-2008 tsql view