0

我正在尝试使用 ebean ORM 层在 Teradata 13.10 和 play 2 框架之间建立友谊。我的应用确实尝试查询数据库:

 select t0.workflow_id c0, t0.CHNL_TYPE_CD c1, t0.WORKFLOW_NAME c2, t0.INFO_SYSTEM_TYPE_CD c3, t0.FOLDER_NAME c4 from ETL_WORKFLOW t0 order by name limit 11

问题是...... Teradata 确实对LIMIT一无所知是否有可能找到实现/覆盖某些东西并使底层 ORM 与 Teradata 一起工作?

UPD:似乎我必须对这些类做一些事情: http ://www.avaje.org/static/javadoc/pub/index.html 我正在寻找示例:1.为 ebean 设置正确的 SQL 方言或制作它在 SQL ANSI 模式下工作。2. 重写 ebean 的类并编写自己的 LIMIT 功能实现。

4

1 回答 1

0

Teradata 支持语句中的TOP n运算符和SAMPLE子句SELECT。作为 ANSI SQL 2008 标准的扩展,与您正在寻找TOP n的运算符最接近。LIMIT n

TOP n在您的语句中的所有其他条款SELECT都得到满足后处理。它是使用QUALIFY ROW_NUMBER()QUALIFY RANK()窗口聚合来完成相同任务的功能替代,在最坏的情况下提供窗口聚合函数的等效性能。

SAMPLE通过允许您在单个结果中返回多个样本集,为您提供了一些额外的灵活性。它也可用于结果集中的简单随机样本。鉴于SAMPLE您可以使用的选项,最好参考 Teradata 的 SQL 数据操作语言手册了解所有详细信息。Teradata 手册可从此处下载。只需选择您希望下载手册的 Teradata 版本即可。

编辑:RawSQL功能与 Ebean 一起使用,您可以在 SQL 中显式使用SAMPLEorTOP n运算符,并且不允许 Ebean 自动添加表达式,例如 LIMIT OFFSET 子句。您是否尝试过这种方法?

于 2012-06-06T13:15:00.893 回答