Condividi tramite


ORDER BY (query NoSQL)

SI APPLICA A: NoSQL

La clausola facoltativa ORDER BY specifica l'ordinamento dei risultati restituiti dalla query.

Sintassi

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

Argomenti

Descrizione
<sort_specification> Specifica una proprietà o espressione in cui ordinare il set di risultati della query. Una colonna di ordinamento può essere specificata come alias di nome o di proprietà. È possibile specificare più proprietà. I nomi delle proprietà devono essere univoci. La sequenza delle proprietà di ordinamento nella clausola ORDER BY definisce l'organizzazione del set di risultati ordinato. Ovvero, il set di risultati viene ordinato in base alla prima proprietà e quindi l'elenco così ordinato viene ordinato in base alla seconda proprietà e così via. I nomi delle proprietà a cui si fa riferimento nella clausola ORDER BY devono corrispondere a una proprietà dell'elenco di selezione o a una proprietà definita nell'insieme specificato nella clausola FROM senza ambiguità.
<sort_expression> Specifica una o più proprietà o espressioni in cui ordinare il set di risultati della query.
<scalar_expression> Espressione che rappresenta il valore da calcolare.
ASC oppure DESC Specifica che i valori nella colonna specificata devono essere ordinati in ordine crescente o decrescente. ASC consente di ordinare i valori dal più piccolo al più grande. DESC consente di ordinare i valori dal più grande al più piccolo. Se questo argomento non viene specificato, ASC (crescente) è l'ordinamento predefinito. null i valori vengono considerati come i valori più bassi possibili.

Nota

Per altre informazioni sulle espressioni scalari, vedere Espressioni scalari

Esempi

Per gli esempi in questa sezione, viene usato questo set di riferimenti di elementi. Ogni elemento contiene una name proprietà con first le proprietà e last .

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

In questo primo esempio, la ORDER BY clausola viene usata per ordinare un campo in base all'ordinamento predefinito, crescente.

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"
  }
]

In questo esempio successivo, l'ordinamento viene specificato in modo esplicito per essere decrescente.

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"
  }
]

In questo esempio finale gli elementi vengono ordinati usando due campi, in un ordine specifico usando l'ordinamento specificato in modo esplicito. Una query che esegue l'ordinamento usando due o più campi richiede un indice composito.

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

Osservazioni:

  • Le query con ORDER BY restituiscono tutti gli elementi, inclusi gli elementi in cui la proprietà nella clausola ORDER BY non è definita. In genere, non è possibile controllare l'ordine in cui vengono visualizzati tipi diversi undefined nei risultati. Per controllare l'ordinamento dei valori non definiti, assegnare qualsiasi undefined proprietà un valore arbitrario per assicurarsi che vengano ordinati prima o dopo i valori definiti.
  • La ORDER BY clausola richiede che i criteri di indicizzazione includano un indice per i campi ordinati. Il runtime di query supporta l'ordinamento in base al nome di una proprietà o alle proprietà calcolate. Il runtime supporta anche più ORDER BY proprietà. Per eseguire una query con più ORDER BY proprietà, definire un indice composito nei campi ordinati.
  • Se le proprietà ordinate potrebbero essere undefined relative ad alcuni elementi e si desidera recuperarle in una ORDER BY query, è necessario includere in modo esplicito questo percorso nell'indice. Il criterio di indicizzazione predefinito non consente il recupero degli elementi in cui la proprietà sort è undefined.