2016-03-21 3 views
3

Ich habe eine Tabelle namens Protokolle, die aus ein paar Spalten besteht.Abrufen der letzten Zeile mit einer bestimmten Spalte von jedem Tag in SQL

ID | Staat | Ergebnis | timestamp

Ich brauche alle Zeilen mit dem Status 'success-changed', aber sie erscheinen nach dem Zufallsprinzip, einige Tage nicht und manche tun sie zweimal. Wenn es mehr als einen pro Tag gibt, muss ich den letzten bekommen.

Kann mir jemand zeigen, wie es geht?

Danke!

Antwort

2

Hier ist eine Methode:

select l.* 
from logs l 
where l.result = 'success-changed' and 
     l.timestamp = (select max(l2.timestamp) 
        from logs l2 
        where l2.result = 'success-changed' and 
          date(l2.timestamp) = date(l.timestamp) 
        ); 

Dies setzt voraus, dass timestamp als datetime Wert gespeichert.

+0

w00t, das funktioniert. Danke :) –

+0

Sie brauchen keine Bedingung "und Datum (l2.timestamp) = Datum (l.timestamp)" –

+0

@AdamSilenko. . . Die Frage besteht darin, nach dem letzten derartigen Datensatz pro Tag zu fragen. Dies ist eine Möglichkeit, dies zu erreichen. –

1

Vielleicht brauchen Sie, um mit Hilfe und Gruppe wählen ...

select id , state , max(timestamp) 
from logs 
where result = 'success-changed' 
group by id , state 
order by 3 desc 

wenn Sie id, Zustand für letzte Zeitstempel müssen und für jeden Tag, an dem Ergebnis = ‚erfolg geändert‘, vielleicht dieser Wille schneller sein:

select id, state, timestamp 
from logs l 
where result = 'success-changed' 
and exists(
    select date(timestamp) 
    from logs 
    where result = 'success-changed' 
    group by date(timestamp) 
    having max(timestamp) = l.timestamp) 
order by 3 desc 

sollten Sie Index auf Timestamp-Feld haben.

+0

Das gibt immer noch mehrere Zeilen pro Tag. https://gist.github.com/RonMelkhior/085ce6df379704844e25 –

+0

@RonMelkhior Ich denke, es wird funktionieren Sie gruppieren nach 'date (timestamp)' anstelle von 'id, state' – FuzzyTree

+0

, wenn Sie ID und Status für einen Tag versuchen, zu addieren Gruppieren nach DATE (timestamp) –

Verwandte Themen