业务需求:在A中需要根据gid字段分组,并只查询到每个分组中最新(时间createDate)的数据。
1.先说说分组查询的局限,group by查询时只能查聚合函数和被分组的列,那么想要的数据很可能查不到。
2.用子查询解决
select * from A a1 where a1.createDate = (select MAX(a2.createDate) from A a2 where a2.gid = a1.gid)
如果写hql,和此句没什么区别。也适用于连接查询等。
业务需求:在A中需要根据gid字段分组,并只查询到每个分组中最新(时间createDate)的数据。
1.先说说分组查询的局限,group by查询时只能查聚合函数和被分组的列,那么想要的数据很可能查不到。
2.用子查询解决
select * from A a1 where a1.createDate = (select MAX(a2.createDate) from A a2 where a2.gid = a1.gid)