Hinweis: Ich bin mir nicht sicher, ob ich diese Frage den führenden Titel gegeben habe, da ich mir nicht sicher bin, wie das funktioniert, aber ich konnte nirgendwo anders Beispiele finden ziemlich spezifische Abfrage.SQL - GROUP BY max Wert
Also, ich habe eine Tabelle „Stimmen“, die mit den Stimmen von anderen Nutzern gefüllt ist (eindeutig als Zahl in der identifiziert user_id Spalte), die Beiträge in einer anderen Tabelle (Abstimmung records „upvote“ entsprechen relevent jeder relevante Beitrag innerhalb der Benutzerschnittstelle).
Ich beabsichtige, diese Stimmen (von Datumzeit) in der Reihenfolge der neuesten Abstimmung für jede erstellt sortieren Post (post_id Spalte), und als solche, die Vermeidung doppelter zurückgegebenen Werte von jedem post_id.
I-Eingang die folgende Abfrage:
SELECT id, user_id, post_id, created, MAX(created)
FROM votes
GROUP BY post_id, user_id
ORDER BY max(created) DESC
Und wieder bekommen:
Table: votes
id | user_id | post_id | created | MAX(created)
----+-----------+-----------+-----------------------+--------------------
115 | 1 | 42 | 2014-07-03 23:08:31 | 2016-03-07 12:08:31
----+-----------+-----------+-----------------------+--------------------
237 | 2 | 101 | 2014-02-13 23:05:14 | 2016-03-05 23:05:14
----+-----------+-----------+-----------------------+--------------------
431 | 7 | 944 | 2014-10-22 22:58:37 | 2016-03-03 19:58:37
----+-----------+-----------+-----------------------+--------------------
255 | 15 | 101 | 2014-02-15 14:02:01 | 2016-02-01 23:05:14
----+-----------+-----------+-----------------------+--------------------
... | ... | ... | ... | ...
Wie Sie sehen können, gibt es ein Duplikat des post_id "101". Das Ergebnis dieser Abfrage scheint nach der maximal erzeugten Zeit für jede Benutzer-ID zu sortieren, die duplizierte post_id's z. Es gibt zwei post_id Spalte Zeilen von "101", wenn ich nur die einzige post_id Spalte Wert von "101", die die maximale Zeit erstellt hat (MAX (erstellt)).
Die post_id und user_id Säulen scheinbar in Gruppen zusammengefasst werden müssen, sonst, wenn ich Gruppe nur durch post_id Ich bin nicht in der Lage von MAX zu sortieren ( erstellt), da es nicht den max zurückkehren (erstellt) für jede Post-ID.
Wie entferne ich diese duplizierten post_id Werte, die die maximal erstellte Zeit nicht zurückgeben?
Was ich nach:
Table: votes
id | user_id | post_id | created | MAX(created)
----+-----------+-----------+-----------------------+--------------------
115 | 1 | 42 | 2014-07-03 23:08:31 | 2016-03-07 12:08:31
----+-----------+-----------+-----------------------+--------------------
237 | 2 | 101 | 2014-02-13 23:05:14 | 2016-03-05 23:05:14
----+-----------+-----------+-----------------------+--------------------
431 | 7 | 944 | 2014-10-22 22:58:37 | 2016-03-03 19:58:37
----+-----------+-----------+-----------------------+--------------------
... | ... | ... | ... | ...
Gruppieren Sie dann nicht nach user_ID. Wenn Sie nur nach dem Maximum (create) suchen und sich nicht darum kümmern, welche user_ID für diese maximalen (erzeugten) Daten zurückgegeben wird, solange sie an die gleiche Post_ID gebunden ist, dann gruppieren Sie sie nicht nach user_ID. – xQbert
wenn ich nur nach post_id gruppieren kann ich nicht nach MAX (erstellt) sortieren, da es nicht die max (created) für jede post_id zurückgibt, relevant für die user_id der letzten post_id – user1228907