Dela via


ORDER BY (NoSQL-fråga)

GÄLLER FÖR: NoSQL

Den valfria ORDER BY satsen anger sorteringsordningen för resultat som returneras av frågan.

Syntax

ORDER BY <sort_specification>  
<sort_specification> ::= <sort_expression> [, <sort_expression>]  
<sort_expression> ::= {<scalar_expression> [ASC | DESC]} [ ,...n ]

Argument

beskrivning
<sort_specification> Anger en egenskap eller ett uttryck som frågeresultatuppsättningen ska sorteras på. En sorteringskolumn kan anges som ett namn eller egenskapsalias. Flera egenskaper kan anges. Egenskapsnamn måste vara unika. Sekvensen för sorteringsegenskaperna ORDER BY i -satsen definierar organisationen för den sorterade resultatuppsättningen. Det innebär att resultatuppsättningen sorteras efter den första egenskapen och sedan sorteras den ordnade listan efter den andra egenskapen och så vidare. Egenskapsnamnen ORDER BY som refereras till i -satsen måste motsvara antingen en egenskap i urvalslistan eller till en egenskap som definierats i samlingen som anges i FROM -satsen utan tvetydigheter.
<sort_expression> Anger en eller flera egenskaper eller uttryck som frågeresultatuppsättningen ska sorteras på.
<scalar_expression> Uttryck som representerar det värde som ska beräknas.
ASC eller DESC Anger att värdena i den angivna kolumnen ska sorteras i stigande eller fallande ordning. ASC sorterar från det lägsta värdet till det högsta värdet. DESC sorterar från högsta till lägsta värde. Om det här argumentet inte anges ASC är (stigande) standardsorteringsordningen. null värden behandlas som de lägsta möjliga värdena.

Kommentar

Mer information om skalära uttryck finns i skalära uttryck

Exempel

För exemplen i det här avsnittet används den här referensuppsättningen med objekt. Varje objekt innehåller en name egenskap med first och last underegenskaper.

[
  {
    "name": {
      "first": "Casey",
      "last": "Jensen"
    },
    "team": "Human resources"
  },
  {
    "name": {
      "first": "Amari",
      "last": "Rivera"
    },
    "team": "Human resources"
  },
  {
    "name": {
      "first": "Kayla",
      "last": "Lewis"
    },
    "team": "Human resources"
  }
]

I det första exemplet ORDER BY används -satsen för att sortera ett fält efter standardsorteringsordningen, stigande.

SELECT VALUE {
    firstName: e.name.first,
    lastName: e.name.last
}
FROM
    employees e
ORDER BY
    e.name.last
[
  {
    "firstName": "Casey",
    "lastName": "Jensen"
  },
  {
    "firstName": "Kayla",
    "lastName": "Lewis"
  },
  {
    "firstName": "Amari",
    "lastName": "Rivera"
  }
]

I nästa exempel anges sorteringsordningen uttryckligen som fallande.

SELECT VALUE {
    firstName: e.name.first,
    lastName: e.name.last
}
FROM
    employees e
ORDER BY
    e.name.last DESC
[
  {
    "firstName": "Amari",
    "lastName": "Rivera"
  },
  {
    "firstName": "Kayla",
    "lastName": "Lewis"
  },
  {
    "firstName": "Casey",
    "lastName": "Jensen"
  }
]

I det här sista exemplet sorteras objekten med hjälp av två fält, i en specifik ordning med explicit angiven ordning. En fråga som sorterar med hjälp av två eller flera fält kräver ett sammansatt index.

SELECT VALUE {
    firstName: e.name.first,
    lastName: e.name.last
}
FROM
    employees e
ORDER BY
    e.name.last DESC,
    e.name.first ASC

Kommentarer

  • Frågor med ORDER BY returnerar alla objekt, inklusive objekt där egenskapen i ORDER BY-satsen inte har definierats. Vanligtvis kan du inte styra ordningen som olika undefined typer visas i resultatet. Om du vill styra sorteringsordningen för odefinierade värden tilldelar du alla undefined egenskaper ett godtyckligt värde för att säkerställa att de sorterar antingen före eller efter de definierade värdena.
  • ORDER BY Satsen kräver att indexeringsprincipen innehåller ett index för fälten som sorteras. Frågekörningen stöder sortering mot ett egenskapsnamn eller beräknade egenskaper. Körningen stöder också flera ORDER BY egenskaper. För att kunna köra en fråga med flera ORDER BY egenskaper definierar du ett sammansatt index för de fält som sorteras.
  • Om egenskaperna som sorteras kan vara undefined för vissa objekt och du vill hämta dem i en ORDER BY fråga måste du uttryckligen inkludera den här sökvägen i indexet. Standardindexeringsprincipen tillåter inte hämtning av objekten där sorteringsegenskapen är undefined.