在表列中查找最大值

时间:2012-10-08 14:02:21

标签: grails

我正在Grails中创建一个版本控制域类:

class VersionControl {

    Date dateCreated
    Long versionNumber

    Long getLatestVersionNumber() {
        //return largest versionNumber
    }

}

我想添加一个查询来获取存储的最大版本号:

Long getLatestVersionNumber()

在SQL中,这个查询看起来或多或少如下:

SELECT TOP 1 MAX(versionNumber) FROM VersionControl

函数必须将值返回为long。

在Grails中执行此操作的正确方法是什么?

4 个答案:

答案 0 :(得分:29)

您可以使用GORM criteria,查询投影:

VersionControl.createCriteria().get {
    projections {
        max "versionNumber"
    }
} as Long

答案 1 :(得分:5)

VersionControl.executeQuery("select max(versionNumber) from VersionControl")

这让我更容易理解。

答案 2 :(得分:0)

VersionControl.find(“from VersionControl vc max(vc.versionNumber)”)

答案 3 :(得分:0)

要在查询中计算最大值,我认为最好的是条件选项:

def maxVersion = VersionControl.withCriteria {
    projections{
        max 'versionNumber'
    }

}

如果要添加groupby修饰符,只需在投影闭包中添加一个新行,如下所示:

VersionControl.withCriteria {
    projections{
        avg 'score'
        groupProperty 'channelId'
    }

}