【问题标题】:Creating a View with an uniqueidentifier column使用 uniqueidentifier 列创建视图
【发布时间】:2013-01-25 15:41:29
【问题描述】:

我需要从数据库中的表中获取数据,在我的例子中是 dbo.EventsCollage 并为其创建一个视图。

视图应包含所基于的表的所有记录,并且我应添加一个名为 Id of datatype uniqueidentifier 的列。

应为视图中显示的每条记录自动创建一个唯一标识符值(随机生成)

这里是我如何创建视图

CREATE VIEW testView
AS
SELECT
x.Name
FROM dbo.EventsCollage as x;

能否请您指出一个代码示例?

【问题讨论】:

  • 您需要该值是可重复的吗?

标签: sql-server sql-server-2008


【解决方案1】:

使用 newId() 。 (注意:每次选择时都会为每一行提供一个新的 ID

CREATE VIEW testView
AS
SELECT
newId() Id, x.Name
FROM dbo.EventsCollage as x;

(DEMO - 1)

或者,如果您需要每行每次都具有相同的唯一标识符,请尝试(注意:这最多仅适用于 1 亿条记录

CREATE VIEW testView
AS

SELECT convert(uniqueidentifier,
       stuff('62799568-6EF2-4C95-84E7-4953A6959C99',1,len(rn),convert(varchar,rn))) id,
       T.Name
FROM ( 
  select x.Name,  ROW_NUMBER() over (order by x.Name) rn
FROM dbo.EventsCollage as x ) T;

(DEMO - 2)

【讨论】:

    【解决方案2】:

    我认为你需要考虑使用NEWID()

    CREATE VIEW testView
    AS
    SELECT
    x.Name, NEWID() as youruniquecol
    FROM dbo.EventsCollage as x;
    

    这里是SQL Fiddle

    祝你好运。

    【讨论】:

      【解决方案3】:

      你也可以这样做:

      SELECT ROW_NUMBER() OVER( ORDER BY col1 ) AS id, col1, col2, col3
      FROM MyResults
      

      见: Add Identity column to a view in SQL Server 2008

      【讨论】:

        猜你喜欢
        • 2021-01-17
        • 1970-01-01
        • 1970-01-01
        • 2014-05-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-06-03
        相关资源
        最近更新 更多