仅为Grails中的字段获取具有重复值的行
我知道我们可以使用仅为Grails中的字段获取具有重复值的行,grails,Grails,我知道我们可以使用 projections { distinct "propertyName" } 对于createCriteria。但是,如何仅获取另一行对于某些指定列可能具有相同值的行?例如,如果我有一个车辆域,其中2个实例的类型为car,3个实例的类型为motorbike,1个实例的类型为bicycle,那么我只想获取包含cars和motorbikes条目的列表 基本上,我想实现如下内容 我能够使用页面中提到的sql解决方案获得值,如 SELECT Locus FROM Genes
projections {
distinct "propertyName"
}
对于createCriteria。但是,如何仅获取另一行对于某些指定列可能具有相同值的行?例如,如果我有一个车辆域,其中2个实例的类型为car,3个实例的类型为motorbike,1个实例的类型为bicycle,那么我只想获取包含cars和motorbikes条目的列表
基本上,我想实现如下内容
我能够使用页面中提到的sql解决方案获得值,如
SELECT Locus FROM Genes GROUP BY Locus HAVING count(*)>1;
但是,我不确定如何使用grails createCriteria实现这一点。这更多的是个人偏好,而不是直接回答您的问题,但是,我喜欢使用direct/native sql来处理criteria查询基础之外的任何内容。这是因为复杂的条件查询可能很难调试,也很难让其他人理解(IMO) DirectSQL还允许我准确地知道发生了什么,我可以确保它使用的是最高效的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
这更多的是个人偏好,而不是直接回答您的问题,但是,我喜欢使用直接/本机sql来处理标准查询基础之外的任何内容。这是因为复杂的条件查询可能很难调试,也很难让其他人理解(IMO) DirectSQL还允许我准确地知道发生了什么,我可以确保它使用的是最高效的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
hql应该能够做到这一点,而hql也应该能够做到这一点