仅获取Grails中字段具有重复值的行

时间:2016-08-10 11:42:44

标签: grails

我知道我们可以使用

从表中获取不同的记录
projections {
   distinct "propertyName"
}

用于createCriteria。但是,如何才能获得另一行对于某些指定列可能具有相同值的那些行?例如,如果我有一个带有2个类型为car的实例的Vehicle域,带有motorbike类型的3个实例,以及带有自行车类型的1个实例,我只想获得带有汽车和摩托车条目的列表。

基本上,我想实现像Select multiple rows with the same value(s)

这样的东西

我能够使用页面中提到的sql解决方案获取值,如

SELECT Locus FROM Genes GROUP BY Locus HAVING count(*)>1;

但是,我不确定如何使用grails createCriteria来实现它。

1 个答案:

答案 0 :(得分:2)

这更像是个人偏好,而不是对问题的直接回答,但我喜欢使用直接/本机sql来处理标准查询基础之外的任何事情。这是因为复杂的标准查询很难调试,其他人难以理解(IMO)。

直接sql还允许我确切知道发生了什么,我可以确保它使用最有效的sql。

    import groovy.sql.Sql 

   ...

    def query = " SELECT Locus FROM Genes GROUP BY Locus HAVING count(*)>1; "
    def sql = new Sql(dataSource)
    def results = sql.rows(query)
   //do stuff with results