1

我正在从我的“记录”表中获取记录。“记录”表有很多列,其中

  1. client_id,外键映射到客户端表。
  2. creation_date , 记录创建日期

我想对此表进行查询,但我想为每个客户端仅获取一条记录(最新创建日期记录具有偏好)。

跟随工作吗?

select r.id,r.xx,r.yy
group by(r.client_id),r.creation_date 
from record r 
order by creation_date desc

我在上面尝试过,似乎获取的记录不是最新的创建日期。希望我的问题很清楚

4

2 回答 2

1

只需保留您的查询并添加WHERE条件:

SELECT r.id,r.xx,r.yy
GROUP BY(r.client_id)
FROM record r
WHERE r.creation_date = (SELECT MAX(creation_date) FROM record tmp WHERE tmp.client_id = r.client_id )

看看这个讨论

于 2012-05-03T14:02:30.787 回答
0

这应该为您提供一个很好的 HQL 起点。

from Record as r inner join fetch r.client
where r.creation_date > (
    select max(rec.creation_date) from Record rec
    where rec.client.client_id = r.client.client_id
)

这当然假设您的 Record 有一个对其父 Client 的引用,称为client.

于 2012-05-03T13:55:29.157 回答