Genau wie die Frage habe ich auch im Internet nach verwandten Lösungen gesucht. Viele der Antworten ähneln dieser SQL-Anweisung:
select Id,Ac count Id,Mark,max(Create Time ) as Latest from AccountMark as b group by AccountId
Empfohlenes verwandtes MySQL Video-Tutorials: „MySQL-Tutorial》
Verwenden der Max-Funktion. Aber in den Daten, die ich gefunden habe, scheint etwas nicht zu stimmen. Wie im Bild gezeigt, stimmen in den hervorgehobenen Daten das Feld „Mark“ und das Feld „CreateTime“ überhaupt nicht überein!
Was ist los? Ist es zuverlässig, in zu gruppieren, nachdem die Max-Funktion verwendet wurde?
Es gibt noch eine weitere Aussage:
select *,COUNT(AccountId) as Num from (select * from AccountMark order by CreateTime desc) `temp` group by AccountId order by CreateTime desc
Die so gefundenen Daten sind korrekt
Allerdings muss ich eine Ansicht erstellen, Die Klausel query darf nicht in der Ansicht in MySQL angezeigt werden. Kann mir bitte jemand eine SQL-Anweisung zur Verfügung stellen, die die korrekten Daten erkennen kann, ohne dass Klauseln angezeigt werden? Danke!
Lösung:
select * from AccountMark as b where not exists(select 1 from AccountMark where AccountId= b.AccountId and b.CreateTime<CreateTime )
Das obige ist der detaillierte Inhalt vonDetaillierte Erklärung, wie MySQL Daten gruppiert und die neuesten Daten extrahiert. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!