ORDER BY-satsen

Gäller för:markerad ja Databricks SQL markerad ja Databricks Runtime

Returnerar resultatraderna på ett sorterat sätt i den angivna användarordningen. Till skillnad från SORT BY-satsen garanterar den här satsen en total ordning i utdata.

Syntax

ORDER BY { { ALL [ sort_direction] [ nulls_sort_oder ] } |
           { expression [ sort_direction ] [ nulls_sort_oder ] } [, ...] }

sort_direction
  [ ASC | DESC ]

nulls_sort_order
  [ NULLS FIRST | NULLS LAST ]

Parametrar

  • ALL

    Gäller för:markerad ja Databricks SQL markerad ja Databricks Runtime 12.2 LTS och senare

    En förkortning som motsvarar att ange alla uttryck i SELECT listan i den ordning de inträffar. Om sort_direction eller nulls_sort_order anges gäller de för varje uttryck.

  • Uttryck

    Ett uttryck av vilken typ som helst som används för att upprätta en ordning där resultaten returneras.

    Om uttrycket är ett literalt INT-värde tolkas det som en kolumnposition i urvalslistan.

  • sort_direction

    Anger sorteringsordningen för order efter uttryck.

    • ASC: Sorteringsriktningen för det här uttrycket är stigande.
    • DESC: Sorteringsordningen för det här uttrycket är fallande.

    Om sorteringsriktningen inte uttryckligen anges sorteras raderna som standard stigande.

  • nulls_sort_order

    Du kan också ange om NULL-värden returneras före/efter icke-NULL-värden. Om null_sort_order inte har angetts sorteras NULL:er först om sorteringsordningen är ASC och NULLS-sortering senast om sorteringsordningen är DESC.

    • NULLS FIRST: NULL-värden returneras först oavsett sorteringsordning.
    • NULLS LAST: NULL-värden returneras sist oavsett sorteringsordning.

När du anger fler än ett uttryck sker sortering från vänster till höger. Alla rader sorteras efter det första uttrycket. Om det finns duplicerade värden för det första uttrycket används det andra uttrycket för att matcha ordningen i gruppen med dubbletter och så vidare. Den resulterande ordningen är inte deterministisk om det finns duplicerade värden i alla ordning efter uttryck.

Exempel

> CREATE TABLE person (id INT, name STRING, age INT);
> INSERT INTO person VALUES
    (100, 'John' , 30),
    (200, 'Mary' , NULL),
    (300, 'Mike' , 80),
    (400, 'Jerry', NULL),
    (500, 'Dan'  ,  50);

-- Sort rows by age. By default rows are sorted in ascending manner with NULL FIRST.
> SELECT name, age FROM person ORDER BY age;
 Jerry NULL
  Mary NULL
  John   30
   Dan   50
  Mike   80

-- Sort rows in ascending manner keeping null values to be last.
> SELECT name, age FROM person ORDER BY age NULLS LAST;
  John   30
   Dan   50
  Mike   80
  Mary NULL
 Jerry NULL

-- Sort rows by age in descending manner, which defaults to NULL LAST.
> SELECT name, age FROM person ORDER BY age DESC;
  Mike   80
   Dan   50
  John   30
 Jerry NULL
  Mary NULL

-- Sort rows in ascending manner keeping null values to be first.
> SELECT name, age FROM person ORDER BY age DESC NULLS FIRST;
 Jerry NULL
  Mary NULL
  Mike   80
   Dan   50
  John   30

-- Sort rows based on more than one column with each column having different
-- sort direction.
> SELECT * FROM person ORDER BY name ASC, age DESC;
 500    Dan   50
 400  Jerry NULL
 100   John   30
 200   Mary NULL
 300   Mike   80

-- Sort rows based on all columns in the select list
> SELECT * FROM person ORDER BY ALL ASC;
 100   John   30
 200   Mary NULL
 300   Mike   80
 400  Jerry NULL
 500    Dan   50