2020-08-25 01:28发布
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
Hana中是否有任何功能可以让我根据记录号删除记录? 例如:在Oracle中,该功能称为 ROWNUMBER
您好,马里奥
您可以使用" $ rowid $"来实现。 这是一个内部专栏,SAP强烈建议您不要使用它们。 它不在任何程序或脚本中。 如果您想了解更多有关它们的信息,请阅读以下SAP注释(按顺序):
https://launchpad.support.sap.com/#/notes/2414714
https://launchpad.support.sap.com/#/notes/1986747
话虽如此,以下是一个示例 工作原理-仅出于教育目的:
创建表table_a( acol1 int不为null ); INSERT INTO table_a(acol1)values(1); INSERT INTO table_a(acol1)values(2); INSERT INTO table_a(acol1)values(3); INSERT INTO table_a(acol1)values(4); SELECT" $ rowid $",* from table_a;
结果应类似于:
$ rowid $; ACOL1 1; 1 2; 2 3; 3 4; 4
现在让我们从第2行和第3行中删除记录。
从table_a中删除(2,3)中的" $ rowid $"; 从table_a中选择" $ rowid $",*;
结果是:
$ rowid $; ACOL1 1; 1 4; 4
在这种情况下,如果使用表自己的列进行过滤,则可以通过相同的语句来完成:
从table_a删除,其中(2,3 ); 从table_a中选择" $ rowid $",*;
结果基本相同:
作为个人建议:使用严格定义的过滤器构建查询并运行它。 请勿将内部列用于此目的。 我看不到为此使用rowid的原因背后的任何逻辑-除非您在没有主键/唯一索引的表中有重复的记录。
尽管如此,我还是建议 您需要备份表并彻底测试其关系,以避免任何逻辑上的不一致(从应用程序角度来看)。
最诚挚的问候,
Luis
Luis的话在这里很明显。
我想补充的一点是 通常会被忽略:
您可以尝试使用SELECT DISTINCT查询来创建新表或结果集,而不必尝试就地处理重复记录。 例如
创建列表no_dubs喜欢tabs_with_dups,但不包含数据; 插入no_dubs( SELECT DISTINCT * 从 tabs_with_dups);
嗨,路易斯·达瑞, Lars Breddemann
非常感谢你们俩贡献了自己的知识。
最多设置5个标签!
您好,马里奥
您可以使用" $ rowid $"来实现。 这是一个内部专栏,SAP强烈建议您不要使用它们。 它不在任何程序或脚本中。 如果您想了解更多有关它们的信息,请阅读以下SAP注释(按顺序):
https://launchpad.support.sap.com/#/notes/2414714
https://launchpad.support.sap.com/#/notes/1986747
话虽如此,以下是一个示例 工作原理-仅出于教育目的:
结果应类似于:
现在让我们从第2行和第3行中删除记录。
结果是:
在这种情况下,如果使用表自己的列进行过滤,则可以通过相同的语句来完成:
结果基本相同:
作为个人建议:使用严格定义的过滤器构建查询并运行它。 请勿将内部列用于此目的。 我看不到为此使用rowid的原因背后的任何逻辑-除非您在没有主键/唯一索引的表中有重复的记录。
尽管如此,我还是建议 您需要备份表并彻底测试其关系,以避免任何逻辑上的不一致(从应用程序角度来看)。
最诚挚的问候,
Luis
Luis的话在这里很明显。
我想补充的一点是 通常会被忽略:
您可以尝试使用SELECT DISTINCT查询来创建新表或结果集,而不必尝试就地处理重复记录。 例如
嗨,路易斯·达瑞, Lars Breddemann
非常感谢你们俩贡献了自己的知识。
一周热门 更多>