2017-05-16 2 views
-1

Gibt es eine eingebaute Funktion in sql, um die Reihenfolge umzukehren, in der die groupby funktioniert? Ich versuche, einen bestimmten Schlüssel zu gruppieren, aber ich möchte den letzten eingefügten Datensatz zurückgegeben haben und nicht den ersten eingefügten Datensatz.SQL: reverse groupby: EDIT

Das Ändern der Reihenfolge mit orderby hat keine Auswirkungen auf dieses Verhalten.

Vielen Dank im Voraus!

EDIT:

ist dies die Beispieldaten:

id|value 
----- 
1 | A 
2 | B 
3 | B 
4 | C 

als Rückkehr will ich

1 | A 
3 | B 
4 | C 

nicht

1 | A 
2 | B 
4 | C 

, wenn sie von id mit Gruppe nicht tun bekomme das gewünschte Ergebnis.

+2

Bitte zeigen Sie uns einige Beispieldaten, die Ihre Frage veranschaulichen. –

+1

Bitte geben Sie die Beispieldaten und das erwartete Ergebnis an. Die Frage ist mir unklar und Beispieldaten würden zur Klärung beitragen. Scheint mir, Sie wollen ein Maximum für das Datum oder Sie möchten max (eingefügt), ID-Gruppe nach ID, dann wieder mit dem Basis-Set verbinden, um den neuesten Datensatz von jeder Gruppe zu bekommen? – xQbert

+4

'GROUP BY' gibt keine" Stichproben "-Aufzeichnungen zurück. Sie sollten richtige Aggregationsfunktionen haben, um den von Ihnen beabsichtigten Wert zu erhalten. –

Antwort

0

Verwenden Max() als Aggregatfunktion für Ihre id:

SELECT max(id), value FROM <table> GROUP BY value; 

Dies wird zurück:

1 | A 
3 | B 
4 | C 

Was eloquent, ich habe es nicht benutzt, aber ich denke, es würde aussehen wie:

$myData = DB::table('yourtable') 
       ->select('value', DB::raw('max(id) as maxid')) 
       ->groupBy('value') 
       ->get(); 
+0

Wie kann ich das zu 'eloquent' konvertieren? – Keutelvocht

1

Frage hier ist, wie identifizieren Sie last inserted row. Basierend auf Ihrem Beispiel sieht es so aus basierend auf id. Wenn id automatisch generiert wird, oder eine Sequenz, dann können Sie dies definitiv tun.

select max(id),value 
from your_table 
group by value 

Idealfall in einem Tabellenentwurf verwendet Menschen eine Datumsspalte, die die Zeit einen bestimmten Datensatz hält wurde eingeführt, so ist es einfach, durch das bestellen.