我有一个这样的表:

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


我并不是说这是最快或最好的方法,但是您提供的数据和您提供的查询似乎就是您想要完成的工作。如果您需要任何微调,请告诉我!

10-04 18:02