删除Hana中相等的记录

2020-08-25 01:28发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


Hana中是否有任何功能可以让我根据记录号删除记录? 例如:在Oracle中,该功能称为 ROWNUMBER

(83.1 kB)

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


Hana中是否有任何功能可以让我根据记录号删除记录? 例如:在Oracle中,该功能称为 ROWNUMBER

(83.1 kB)
付费偷看设置
发送
4条回答
大简至美
1楼 · 2020-08-25 02:19.采纳回答

您好,马里奥

您可以使用" $ 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 $; ACOL1
 1; 1
 4; 4 

作为个人建议:使用严格定义的过滤器构建查询并运行它。 请勿将内部列用于此目的。 我看不到为此使用rowid的原因背后的任何逻辑-除非您在没有主键/唯一索引的表中有重复的记录。

尽管如此,我还是建议 您需要备份表并彻底测试其关系,以避免任何逻辑上的不一致(从应用程序角度来看)。

最诚挚的问候,

Luis

Cikesha
2楼-- · 2020-08-25 02:05
< p>这绝对是比使用$ rowid $更好的解决方案!

wang628962
3楼-- · 2020-08-25 02:18

Luis的话在这里很明显。

我想补充的一点是 通常会被忽略:

您可以尝试使用SELECT DISTINCT查询来创建新表或结果集,而不必尝试就地处理重复记录。 例如

创建列表no_dubs喜欢tabs_with_dups,但不包含数据;
 插入no_dubs(
SELECT DISTINCT
* 从 tabs_with_dups);
clever101
4楼-- · 2020-08-25 02:26

嗨,路易斯·达瑞 Lars Breddemann

非常感谢你们俩贡献了自己的知识。

一周热门 更多>