MySQL
ZAMÓW PRZEZ
Szukaj…
Konteksty
Klauzule w SELECT
mają określoną kolejność:
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
Podstawowy
ORDER BY x
x
może być dowolnym typem danych.
-
NULLs
poprzedzająNULLs
inne niż NULL. - Wartość domyślna to
ASC
(od najniższej do najwyższej) - Ciągi
VARCHAR
(VARCHAR
itp.) Są uporządkowane zgodnie zCOLLATION
deklaracji -
ENUMs
są uporządkowane według kolejności deklaracji ciągów.
Rosnąco / malejąco
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
są na pierwszym miejscu nawet dlaDESC
. - W powyższych przykładach
INDEX(x)
,INDEX(lastname, firstname)
,INDEX(submit_date)
może znacznie poprawić wydajność.
Ale ... Mieszanie ASC
i DESC
, tak jak w poprzednim przykładzie, nie może skorzystać z indeksu złożonego, aby skorzystać. Również INDEX(submit_date DESC, id ASC)
pomoże - „ DESC
” jest rozpoznawany składniowo w deklaracji INDEX
, ale jest ignorowany.
Kilka sztuczek
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.
Niestandardowe zamówienie
SELECT * FROM some_table WHERE id IN (118, 17, 113, 23, 72)
ORDER BY FIELD(id, 118, 17, 113, 23, 72);
Zwraca wynik w określonej kolejności identyfikatorów.
ID | ... |
---|---|
118 | ... |
17 | ... |
113 | ... |
23 | ... |
72 | ... |
Przydatne, jeśli identyfikatory są już posortowane i wystarczy pobrać wiersze.
Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow