+------+---------+--------+---------+---------+---------+
| id | user_id | obj_id | created | applied | content |
+------+---------+--------+---------+---------+---------+
| 1 | 1 | 1 | 1 | 1 | ... |
| 2 | 1 | 2 | 1 | 1 | ... |
| 3 | 1 | 1 | 1 | 2 | ... |
| 4 | 1 | 2 | 2 | 2 | ... |
| 5 | 2 | 1 | 1 | 1 | ... |
| 6 | 2 | 2 | 1 | 1 | ... |
+------+---------+--------+---------+---------+---------+
Ich habe eine Tabelle ähnlich der oben genannten. id
, user_id
und obj_id
sind Fremdschlüssel; created
und applied
sind Zeitstempel, die als Ganzzahlen gespeichert sind. Ich muss die gesamte Zeile, gruppiert von user_id
und obj_id
, mit dem maximalen Wert von applied
bekommen. Wenn zwei Zeilen den gleichen applied
Wert haben, muss ich den maximalen Wert von created
bevorzugen. Also für die obigen Daten, meine gewünschte Ausgabe ist:MySQL erhält das Maximum der Spalte mit Fallback zur zweiten Spalte
+------+---------+--------+---------+---------+---------+
| id | user_id | obj_id | created | applied | content |
+------+---------+--------+---------+---------+---------+
| 1 | 1 | 1 | 1 | 1 | ... |
| 4 | 1 | 2 | 2 | 2 | ... |
| 5 | 2 | 1 | 1 | 1 | ... |
| 6 | 2 | 2 | 1 | 1 | ... |
+------+---------+--------+---------+---------+---------+
Meine aktuelle Lösung ist alles geordnet werden von applied
dann created
:
select * from data order by applied desc created desc;
und Dingen aussortieren im Code, aber diese Tabelle wird ziemlich groß und ich würde gerne eine SQL-Lösung, die nur die Daten, die ich brauche.
➕1 für die ASCII-Kunst; Aber für CVE: Bitte fügen Sie Ihre erste Anfrage hinzu. –
@LinusKleen Wie meinst du das? Die Abfrage, die ich gerade verwende, oder die Abfragen, um die obigen Daten zu replizieren? –
Entschuldigung. "Initial" wie in: "derjenige, der dich beunruhigt." –