【问题标题】:How to write union query in jOOQ with single order by clause?如何在 jOOQ 中使用单个 order by 子句编写联合查询?
【发布时间】:2013-12-30 12:11:04
【问题描述】:

Docs试试看:

代码在这里:

SelectQuery<Record> selectQuery=Transaction.current().selectQuery();   
selectQuery.addSelect(Property.PROPERTY.PROPERTY_RSN);  
selectQuery.addFrom(Property.PROPERTY);  
SelectQuery<Record> selectUnionQuery=Transaction.current().selectQuery();  
selectUnionQuery.addSelect(Folder.FOLDER.FOLDER_RSN);  
selectUnionQuery.addFrom(Folder.FOLDER);  
selectQuery.union(selectUnionQuery);  
selectQuery.addOrderBy(Folder.FOLDER.FOLDER_RSN);  
selectQuery.fetch();  

谁能帮我解决这个问题?

谢谢

【问题讨论】:

  • 当您在 SO 上发布代码 sn-ps 时,请改进您的代码演示。
  • 感谢@EvertonAgner 编辑
  • NP,这样你就可以避免被否决:)
  • 您提供了代码,但既没有描述问题,也没有请求帮助。帖子的主题是帖子的主题;它不是帖子的内容(即它不是问题,而是描述问题的主题)

标签: java sql database oracle jooq


【解决方案1】:

这个问题最近在 jOOQ 用户群上被问到:

jOOQ 对 UNION 的(历史)理解记录在此:

这与 SQL 标准不同,后者将 ORDER BY 应用于整个子查询集。路线图上有一个解决方案: https://github.com/jOOQ/jOOQ/issues/1658

同时,您可以通过使用派生表来解决此限制:

ctx.select()
   .from(
      select(A)
     .from(T1)
     .union(
      select(B)
     .from(T2))
    )
   .orderBy(...)

请注意,您可能必须为派生表指定别名才能访问其列。

【讨论】:

    猜你喜欢
    • 2011-07-06
    • 2011-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-05
    • 1970-01-01
    相关资源
    最近更新 更多