欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

JPA查询分组里的最新数据

程序员文章站 2022-04-21 16:37:19
...

如题,用到分组查询,并且要求是每组的最新一条数据,见代码如下:

@Query("SELECT d from RealTimeData d "
			+ "where d.id in (SELECT MAX(id) from RealTimeData GROUP BY simCard) "
			+ " and d.simCard in (SELECT cd.simCard from Device cd where cd.customer.id=?1)"
			)
	public Page<RealTimeData> findDataListByCustomerId(Long customerId,Pageable pageable);

解释:

  1. Device表时存储用户的设备信息,其中字段 Customer customer为用户。
  2. simCard字段存放设备的唯一识别码。
  3. SELECT MAX(id) from RealTimeData GROUP BY simCard) 查出按设备识别码的最新信息
  4. (SELECT cd.simCard from Device cd where cd.customer.id=?1) 查出用户名下的设备的识别码
  5. RealTimeData 和 Device都是实体类

以上,实际运行,因数据量有限,尚未出现BUG,如有问题,请给我留言,谢谢!

相关标签: mysql jpa