GROUP BY hinter ORDER BY
Muss ich tun GROUP BY
nach ORDER BY
. Ich verstehe nicht, warum MySQL nicht unterstützt werden.
Das ist mein code:
SELECT
`pages`.`id`,
`contents`.`id_language`,
[...]
[...]
ORDER BY
FIND_IN_SET(`languages`.`id`, '3') DESC
[the GROUP BY]
Die Ergebnisse werden so etwas wie dieses:
id | id_language | ...
1 3
1 1
2 3
2 5
2 1
Muss ich group by ID, ich brauche nur die erste Folge und ich muss sparen in Aussicht. Ich kann nicht, verwenden Sie eine UNTERABFRAGE, weil die.
Das Ergebnis muss sein:
id | id_language | ...
1 3
2 3
Hinweis: nicht zu verwechseln id_language = 3
, denn es ist nicht die Regel.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Group By-gruppieren von Resultsets, und wird in der Regel für die aggregation.
Order By ist in der Weise, dass die Ergebnisse sortiert sind.
Möchten Sie vielleicht eine zusätzliche Spalte in der ursprünglichen Abfrage, die Sie der GRUPPE DURCH, zusammen mit, was Sie gerade gruppiert wird. Die Spalte, wenn gruppiert, könnte dann verwendet werden, um die Reihenfolge danach. Zum Beispiel:
Ich würde beabsichtigen, für languageOrder positiv für Gruppen mit Sprache #3, 0 sonst. Also Gruppen enthalten, dass die Sprache 3 wird an der Spitze.
1|3
,1|5
,2|2
,2|5
zum Beispiel... ich muss für jede ID der ERSTEN GEFUNDENEN ZEILE... so, das Ergebnis für dieses Beispiel ist1|3
und2|2
nur.id_language
bestimmte eine ID repräsentiert eine Sprache. Wenn ich1|english
,2|portuguese
, und Benutzer eingestellt, um den Vorzug zu1|2
das erste Ergebnis gefunden brauchen, lieber1|english
, bekomme aber2|portuguese
Fall nicht vorhanden ist, eine Zeile für1|english
. Wenn user set2|1
, wie Reihenfolge der Präferenz, dann, in diesem Fall die Präferenz ist2|portuguese
und nach1|english
, Fall nicht vorhanden Zeile in Portugiesisch für einen bestimmten Objekt-ID.Sehr amüsant, versuchen
So weit ich sagen kann, das Regel-set ist
id_language=3
,die machen keine Unterschiede mit
where