1

私はこのようなテーブルを手に入れました

測定

id    object_id   generated_at (v)    
110   4           2012-11-13 10:29:00   
109   4           2012-11-13 10:28:00   
108   4           2012-11-13 10:27:00
107   3           2012-11-13 10:26:00
106   3           2012-11-13 10:25:00
105   4           2012-11-13 10:24:00
104   4           2012-11-13 10:23:00
103   1           2012-11-13 10:22:00
102   1           2012-11-13 10:21:00
...

列順に並べられてgenerated_atいます。

私の質問:選択する機能はありますか

id    object_id   generated_at (v)    
110   4           2012-11-13 10:29:00   
109   4           2012-11-13 10:28:00   
108   4           2012-11-13 10:27:00

generated_at同じ測定値の最後のグループ(順序付け) object_id

これは、測定モデルのレールの例でも、SQLクエリの例でもかまいません。助けてくれてありがとう!

4

3 に答える 3

2

元の質問では、すべてのオブジェクトではなく、最新のグループのオブジェクトが明らかに必要でした。このためには、最大オブジェクトIDと他のオブジェクトの最大生成時間の両方を計算する必要があります。

select *
from t cross join
     (select max(object_id) maxobject_id from t) maxt
where object_id = maxt.maxobject_id and
      generated_at > (select max(generated_at) from t where object_id <> maxt.maxobject_id)
于 2012-11-13T18:15:13.847 に答える
0

私はこれがうまくいくと信じています:SELECT * FROM table WHERE object_id = (SELECT MAX(object_id) FROM table)

于 2012-11-13T17:57:58.247 に答える
0

以下のクエリは結果を取得します。

select * from Measurements
left join Measurements as M2
on
(M2.generated_at > Measurements.generated_at and M2.object_id <> Measurements.object_id)
where 
M2.id IS NULL
and
Measurements.object_id = 
(select object_id from Measurements where generated_at = (select MAX(generated_at) from Measurements))
于 2012-11-13T18:29:04.990 に答える