MySQL
SORTIEREN NACH
Suche…
Kontexte
Die Klauseln in einem SELECT
haben eine bestimmte Reihenfolge:
SELECT ... FROM ... WHERE ... GROUP BY ... HAVING ...
ORDER BY ... -- goes here
LIMIT ... OFFSET ...;
( SELECT ... ) UNION ( SELECT ... ) ORDER BY ... -- for ordering the result of the UNION.
SELECT ... GROUP_CONCAT(DISTINCT x ORDER BY ... SEPARATOR ...) ...
ALTER TABLE ... ORDER BY ... -- probably useful only for MyISAM; not for InnoDB
Basic
BESTELLEN DURCH x
x
kann ein beliebiger Datentyp sein.
-
NULLs
gehen vor NULLs vor. - Der Standardwert ist
ASC
(niedrigste bis höchste) - Zeichenfolgen (
VARCHAR
usw.) werden gemäß derCOLLATION
der DeklarationCOLLATION
-
ENUMs
werden nach der Deklarationsreihenfolge ihrer Zeichenfolgen geordnet.
Aufsteigend absteigend
ORDER BY x ASC -- same as default
ORDER BY x DESC -- highest to lowest
ORDER BY lastname, firstname -- typical name sorting; using two columns
ORDER BY submit_date DESC -- latest first
ORDER BY submit_date DESC, id ASC -- latest first, but fully specifying order.
-
ASC
=ASCENDING
,DESC
=DESCENDING
-
NULLs
sogar beiDESC
erster Stelle. - In den obigen Beispielen können
INDEX(x)
,INDEX(lastname, firstname)
,INDEX(submit_date)
die Leistung erheblich verbessern.
Aber ... Beim Mischen von ASC
und DESC
, wie im letzten Beispiel, kann kein zusammengesetzter Index verwendet werden. INDEX(submit_date DESC, id ASC)
hilft auch nicht - " DESC
" wird in der INDEX
Deklaration syntaktisch erkannt, aber ignoriert.
Einige Tricks
ORDER BY FIND_IN_SET(card_type, "MASTER-CARD,VISA,DISCOVER") -- sort 'MASTER-CARD' first.
ORDER BY x IS NULL, x -- order by `x`, but put `NULLs` last.
Kundenspezifische Bestellung
SELECT * FROM some_table WHERE id IN (118, 17, 113, 23, 72)
ORDER BY FIELD(id, 118, 17, 113, 23, 72);
Gibt das Ergebnis in der angegebenen Reihenfolge der IDs zurück.
Ich würde | ... |
---|---|
118 | ... |
17 | ... |
113 | ... |
23 | ... |
72 | ... |
Nützlich, wenn die IDs bereits sortiert sind und Sie nur die Zeilen abrufen müssen.
Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow