从表中删除前N条记录的SQL是什么?

2020-09-26 00:13发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)我在讨论中看到了以下解决方案: ...

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

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


我在讨论中看到了以下解决方案:

从MY_TABLE删除其中(,<...>)的地方(从的MY_TABLE顺序中选择顶部 ,<...>) ;

但是对于我来说,我无法比较这些字段,因为它可以删除在前N行之后的表中的其他重复记录。 我只想删除前N行。

7条回答
Aaron 3364
2020-09-26 00:49

您可以使用" $ rowid $"。 (不要使用大写字母,否则将无法使用)
没有人提及,但是sap_hana中的每个表都有一个隐藏列,即" $ rowid $"
您可以使用以下代码;

注意:请使用$ rowid $,后果自负。 它没有文档记录,不受支持,完全不建议使用。 ( Lars Breddemann 已经从技术上解释了为什么我们不应该使用它)/p>

从" TABLE_NAME"中删除,其中" $ rowid $" <1000 

$ rowid $列的值与分区ID相关。 对于没有分区的表,该值的范围是1到18014398509481984。在分区表上,分区1的值开始于18014398509481985;对于分区1,该值从1开始。 分区2开始于36028797018963969; 分区3开始于54043195528445953; 等等。 从$ rowid $中可以得到分区ID(如果需要该信息)。 Lars Breddemann 可以提供更多信息。

我再说一次; SAP并未正式支持$ rowid $列。 因此,谨慎使用此选项,后果自负。 另外,由于触发了一些内部流程,您将对包含隐藏列的查询造成性能损失。 通常,最好选择SAP HANA正式支持的功能。 老实说,改变sap hana景观中的$ rowid $行为可能比关闭整个公司更难。 即使在任何HANA源代码中加了一个逗号,也可能需要董事会会议,500-600次内部讨论,对汁液技术架构师的看法以及内部的一些民主投票。 无论如何,这些都不会让我们鼓舞我们。 最好选择内部已经存在的标准方法。

一周热门 更多>