1

「レコード」テーブルからレコードをフェッチしています。「レコード」テーブルには多くの列があり、そのうちの2つは

  1. client_id、クライアントテーブルへの外部キーマッピング。
  2. Creation_date、レコード作成日

このテーブルに対してクエリを実行したいのですが、クライアントごとに1つのレコードのみをフェッチしたいと思います(最新の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
)

もちろん、これは、レコードに。という親クライアントへの参照があることを前提としていますclient

于 2012-05-03T13:55:29.157 に答える