我有一个这样的表:
VoerID LogID Status Datum
1051 93 F vr 08 okt 2004
1051 1037 A di 19 okt 2004
1051 8955 A di 18 jan 2005
1051 43972 A wo 07 sep 2005
…. …. ….. ……..
44444 10000000 V someday 2013
因此,每个
VoerID
我都有几个LogID
。我想看到的是每个logID
的最新VoerID
。举例来说,我只会看
VoerID
1051。至此:
select Voer.ID, Datum, Status, maxLogID
from (SELECT VoerID, Datum, Status, MAX(LogID) as maxLogID
FROM DB.Log group by VoerID order by Status)t1 where VoerID = '1051'
当我执行此答案时
VoerID LogID Status Datum
1051 43972 F vr 08 okt 2004
因此,我得到了最新的LogId,但没有获得相应的Status和Date。
如何解决?
最佳答案
如果您真的想通过双重选择来做到这一点,那么编写此代码的最佳方式就是...
SELECT v.VoerID,v.LogID,v.Status,v.Datum From tableName v
INNER JOIN (Select MAX(LogID) as lastID, VoerID FROM tableName GROUP BY VoerID) r
ON v.LogID=r.lastID ORDER BY v.VoerID DESC
我并不是说这是最快或最好的方法,但是您提供的数据和您提供的查询似乎就是您想要完成的工作。如果您需要任何微调,请告诉我!