我正在尝试使用SAP HANA中的OFFSET关键字运行简单查询,但我获取所有Offset值的相同数据。
select * from tableName order by BillingDate limit 10 OFFSET 0;
select * from tableName order by BillingDate limit 10 OFFSET 11;
两个查询都返回相同的结果。 有人能帮助我吗?
答案 0 :(得分:2)
如果您可以共享与HANA版本相关的一些信息/脚本,将会很有帮助。数据模型。
无论是否使用OFFSET
, LIMIT
和ORDER BY
都可以在HANA SQL(我使用的是版本HANA 02 SP03)中使用。但是,从技术上讲,没有LIMIT
使用OFFSET
和ORDER BY
是没有意义的。
使用不带ORDER BY的OFFSET 不可靠,因为订单可能会随着时间的推移而改变(除非您将它与ORDER BY查询配对)。
例如: 以ProductID为键的示例实体。
让我们用样本数据填充
场景1:使用Order By
答案 1 :(得分:0)
我在某些查询中也使用OFFSET遇到了问题。我将问题归结为我认为是Hana的1.0.120.x版OLAP引擎中的错误。
将执行引擎强制为COLUMN可以解决此问题,但随后我们失去了OLAP引擎的性能优势。为了强制Hana不要使用OLAP引擎,您可以附加以下SQL子句:
WITH HINT(NO_USE_OLAP_PLAN)
该错误显然已在Hana版本1.0.122.x中修复。
答案 2 :(得分:0)
我们终于找到了这个问题的答案。 实际上,HANA上有两种不同类型的表 首先是一张普通的物理表,该表实际存在于HANA上,适用于这种类型的表偏移量,并且限制查询按预期工作。 表的第二种类型是virtual tables
在这些表上,OFFSET查询不起作用link here 注意:在本例中,我们正在查询虚拟表