Ich habe eine Tabelle, in der ich drei Felder mit dem Datentyp INT, INT und INT habe.Sortieren nach mehreren Spalten MySQL
Ich möchte meine Select-Abfrage mit all diesen drei Spalten sortieren. Sortieren nach ASC wenn Feld A < = 10, sortiert nach DESC field2 und sortieren nach ASC Feld irgendeinem Grund 3.
SELECT * FROM table1 WHERE id=uid
ORDER BY
CASE table1.field1
WHEN table1.field1 < 11 THEN table1.field1
END
ASC,
table1.field2 DESC,
table1.field3 ASC;
+------+--------+---------+
|field1| field2 | field3 |
+------+--------+---------+
| 1 | 4 | 1 |
+------+--------+---------+
| 2 | 3 | 2 |
+------+--------+---------+
| 9 | 2 | 4 |
+------+--------+---------+
| 10 | 1 | 7 |
+------+--------+---------+
Für die CASE
tut wirklich funktionieren, wenn ich ausschließen, dass es funktioniert, aber tut Art alle field1 in ASC bestellen, während ich nur die 10 zuerst möchte.
Während die Reihenfolge aus irgendeinem Grund jetzt korrekt ist, werden diese 10 Zeilen, bestellt als sein sollte , aber scheinen die letzten 10 Reihen zu sein, die ich anstelle der Top 10 bekomme. –
@JohnJames 'während ich nur die 10 zuerst will. Es sieht aus, als ob du' LIMIT 10' brauchst. Wenn nicht, dann ist Ihre Frage wahrscheinlich N-Werte pro Gruppe, also würde ich vorschlagen, eine andere Frage mit http://rextester.com Beispieldaten und gewünschten Resultset zu stellen. – lad2025