2016-04-23 13 views
0

Eine Idee, warum die folgenden zwei Abfragen die gleichen Ergebnisse liefern? Nach allen Referenzen, die ich gesehen habe, sollte das erste nicht einmal funktionieren, aber es funktioniert. Offensichtlich, wenn es kein Fehler ist, bevorzuge ich den ersten, da es eine einfachere und wahrscheinlich schnellere Abfrage ist.Warum funktioniert diese patriarchal nicht aggregierte Gruppe?

SELECT *,MIN(ts) FROM tbl GROUP BY id; 

SELECT *,ts FROM tbl a WHERE rowid IN 
    (SELECT rowid FROM tbl b WHERE a.id = b.id ORDER BY ts LIMIT 1); 

Hier einige Beispieldaten:

rowid id ts name 
    1 58 10 aaa 
    2 58 5 bbb 
    3 72 7 ccc 

Ergebnis erwartet:

2 58 5 bbb 5  
    3 72 7 ccc 7 

SQLFiddle here...

+1

Es wäre nützlich, um zu sehen, was die Daten, die Sie sieht aus wie –

Antwort

1

Dies garantiert, da SQLite 3.7.11 zu arbeiten.

Was das Warum: einige zahlender Kunde es wollte ...

+0

So nach [diese] sind Abfragen (http://stackoverflow.com/a/4377116/3766649), nur auf Android-Versionen 4.1+ unterstützt. Vielen Dank. – jazzgil

1

Dies funktioniert, weil einige Plattformen, die Windowing-Funktionen nicht dieses Konstrukts unterstützen zu behandeln, als eine Fensterfunktion - auf SQL Server, Oracle und db2 y ou würde schreiben müssen

min(ts) over(order by ts) 
Verwandte Themen