SQL - 根据不同的属性获取任何行,不重复

时间:2017-07-26 11:03:10

标签: java mysql sql hibernate

是否可以运行查询,即为此表提取具有distinct属性的all并为该distinct属性选择任何匹配的行,对于基于一个属性的唯一/不同行并不重要。

如果

row1 : name:a, age:10, street:james street
row2 : name:b, age:15, street:peter street
row3 : name:c, age:17, street:james street

现在我希望查询返回

row2 and either row1 or row2 

如果它是row1或row2没关系,我不在乎。

现在,理想情况下我想使用hibernate条件查询来执行此操作,因为我已经有了一个查询构建器,我只是将其添加为选项。

2 个答案:

答案 0 :(得分:0)

看起来好像是

select distinct on (street) * from tbl

的工作原理。

答案 1 :(得分:0)

您可以尝试预测:http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/querycriteria.html#querycriteria-projection

这样的事情可行。它将根据" street"选择独特的结果。属性:

List results = session.createCriteria(Entity.class)
    .setProjection( Projections.projectionList()
        .add(Projections.distinct(Projections.property("street")))
    )
    .list();