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