Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何在Db2中使用名为Id(主键)的额外列创建视图?_Sql_Db2 - Fatal编程技术网

Sql 如何在Db2中使用名为Id(主键)的额外列创建视图?

Sql 如何在Db2中使用名为Id(主键)的额外列创建视图?,sql,db2,Sql,Db2,有人能帮我从表中创建一个视图吗?我正在云上使用IBM Db2,我有一个表,其中包含以下列: 我想创建一个具有额外列id的视图,如下所示: 我需要这个列是唯一的,所以我想添加一个新列作为标识。我必须提到这个视图返回了大量数据,所以我需要一种性能良好的方法。我看过一些关于堆栈溢出的相关文章,但我发现它们适用于不同的数据库。 如果您有任何建议,我们将不胜感激。您可以创建一个序列,并将该序列作为id调用 在数据库中创建一个序列 在视图中调用序列并将其别名为ID 创建序列: CREATE SEQUEN

有人能帮我从表中创建一个视图吗?我正在云上使用IBM Db2,我有一个表,其中包含以下列:

我想创建一个具有额外列id的视图,如下所示:

我需要这个列是唯一的,所以我想添加一个新列作为标识。我必须提到这个视图返回了大量数据,所以我需要一种性能良好的方法。我看过一些关于堆栈溢出的相关文章,但我发现它们适用于不同的数据库。
如果您有任何建议,我们将不胜感激。

您可以创建一个
序列
,并将该序列作为id调用

  • 在数据库中创建一个序列
  • 在视图中调用序列并将其别名为ID
  • 创建序列:

    CREATE SEQUENCE sequence_name 
    INCREMENT BY 1 START WITH 1 
    MAXVALUE 30 MINVALUE 0   -- As you required
    NOCYCLE CACHE 10 ORDER;  -- As you required
    
    调用查询:

    select sequence_name.NEXTVAL, f_name, i_name, city, country from table;
    

    如果您不想使用序列,也可以在查询中使用
    ROW\u NUMBER()
    ,您应该解释如何进一步使用这样的id。您必须了解,虽然有很多方法可以“动态”枚举行,但这样的行id不会是永久的。也就是说,当表数据发生变化时(在这一行或其他行中),这样的行id可能会发生变化。Hi@MarkBarinstein我将调用并从字符串启动应用程序(使用Curd存储库)中获取视图记录,我将只执行select操作。我们有一个计划作业,将在一天内刷新。然而,我需要一个id,只是为了在Curd Repo中传递一个引用,我不再使用它了。我不介意在下一次刷新作业中是否更改了id。使用MYTAB t中的
    创建或替换视图MYVIEW AS SELECT ROWNUMBER()OVER()AS id,t.*。Hi@MarkBarinstein它对我有效。这正是我要找的。谢谢