Zoeken…


contexten

De clausules in een SELECT hebben een specifieke volgorde:

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

basis-

BESTELLEN OP x

x kan elk gegevenstype zijn.

  • NULLs vooraf aan niet-NULL's.
  • De standaardwaarde is ASC (laagste naar hoogste)
  • Strings ( VARCHAR , enz.) Zijn geordend volgens de COLLATION van de aangifte
  • ENUMs zijn geordend op volgorde van declaratie van de strings.

Stijgend dalend

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 komen op de eerste plaats, zelfs voor DESC .
  • In de bovenstaande voorbeelden kunnen INDEX(x) , INDEX(lastname, firstname) , INDEX(submit_date) prestaties aanzienlijk verbeteren.

Maar ... ASC en DESC mengen, zoals in het laatste voorbeeld, kan geen gebruik maken van een samengestelde index. INDEX(submit_date DESC, id ASC) helpt ook niet - " DESC " wordt syntactisch herkend in de INDEX aangifte, maar wordt genegeerd.

Enkele trucjes

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.

Aangepaste bestelling

SELECT * FROM some_table WHERE id IN (118, 17, 113, 23, 72) 
ORDER BY FIELD(id, 118, 17, 113, 23, 72);

Retourneert het resultaat in de opgegeven volgorde van id's.

ID kaart ...
118 ...
17 ...
113 ...
23 ...
72 ...

Handig als de ID's al zijn gesorteerd en u alleen de rijen moet ophalen.



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow