我知道我们可以使用
从表中获取不同的记录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来实现它。
答案 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