【问题标题】:How to make Grails subquery for simple example?如何为简单的示例制作 Grails 子查询?
【发布时间】:2021-01-23 10:06:15
【问题描述】:

我想根据子查询最大日期值获取最新记录。这是整个 SQL:

select c1.cr_version_id, c1.current_status_id
from cr_version c1
where c1.date_created = (
    select max(date_created)
    from cr_version
    where change_request_id = c1.change_request_id);

如此简单,但我似乎无法在 Grails 中使用 DetachedCriteria 进行等效查询。我认为子查询可能是

def subq = CRVersion.where {
  projections {
    groupProperty("changeRequest")
    max("dateCreated")
  }
}

但是我不知道如何使用主查询中的子查询,加入 id。我尝试的每件事都会在某个时候结束:

"ERROR: subquery must return only one column"

【问题讨论】:

标签: grails criteria


【解决方案1】:

经过多次挣扎,我认为我已经掌握了我需要的核心。我可以以此为基础:

def crvs = CRVersion.where {
 dateCreated == max(dateCreated).of {
    eqProperty("changeRequest", "this.changeRequest")
    setAlias "crVersion"
 }
}.list()

【讨论】:

    猜你喜欢
    • 2014-10-10
    • 2017-03-11
    • 1970-01-01
    • 2014-03-11
    • 1970-01-01
    • 2016-03-02
    • 2011-06-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多