ORDEM POR cláusula em Azure Cosmos DB

APLICA-SE A: SQL API

A cláusula opcional ORDER BY especifica a ordem de triagem dos resultados devolvidos pela consulta.

Sintaxe

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

Argumentos

  • <sort_specification>

    Especifica uma propriedade ou expressão para classificar o conjunto de resultados de consulta. Uma coluna tipo pode ser especificada como um nome ou pseudónimo de propriedade.

    Várias propriedades podem ser especificadas. Os nomes das propriedades devem ser únicos. A sequência das propriedades do tipo na ORDER BY cláusula define a organização do conjunto de resultados classificados. Ou seja, o conjunto de resultados é classificado pela primeira propriedade e, em seguida, a lista ordenada é ordenada pela segunda propriedade, e assim por diante.

    Os nomes de propriedade referenciados na ORDER BY cláusula devem corresponder a um imóvel na lista selecionada ou a um imóvel definido na coleção especificado na FROM cláusula sem qualquer ambiguidade.

  • <sort_expression>

    Especifica uma ou mais propriedades ou expressões para classificar o conjunto de resultados de consulta.

  • <scalar_expression>

    Consulte a secção de expressões Scalar para mais detalhes.

  • ASC | DESC

    Especifica que os valores na coluna especificada devem ser classificados em ordem ascendente ou descendente. ASC classifica do valor mais baixo para o valor mais alto. DESC classifica do valor mais alto para o valor mais baixo. ASC é a ordem de classificação padrão. Os valores nulos são tratados como os valores mais baixos possíveis.

Observações

A ORDER BY cláusula exige que a política de indexação inclua um índice para os campos que estão a ser classificados. O tempo de verificação da consulta Azure Cosmos DB suporta a triagem contra um nome de propriedade e não contra propriedades compututadas. A Azure Cosmos DB suporta múltiplas ORDER BY propriedades. Para executar uma consulta com várias propriedades ORDER BY, deve definir um índice composto nos campos que estão a ser classificados.

Nota

Se as propriedades que estão a ser classificadas podem ser indefinidas para alguns documentos e pretender recuperá-las numa consulta ORDER BY, deve incluir explicitamente este caminho no índice. A política de indexação padrão não permitirá a recuperação dos documentos onde a propriedade do tipo é indefinida. Reveja as consultas de exemplo em documentos com alguns campos em falta.

Exemplos

Por exemplo, aqui está uma consulta que recupera famílias em ordem crescente do nome da cidade residente:

    SELECT f.id, f.address.city
    FROM Families f
    ORDER BY f.address.city

Os resultados são:

    [
      {
        "id": "WakefieldFamily",
        "city": "NY"
      },
      {
        "id": "AndersenFamily",
        "city": "Seattle"
      }
    ]

A seguinte consulta recupera a família ids por ordem da data de criação do item. Item creationDate é um número que representa o tempo de época, ou tempo decorrido desde 1 de janeiro de 1970 em segundos.

    SELECT f.id, f.creationDate
    FROM Families f
    ORDER BY f.creationDate DESC

Os resultados são:

    [
      {
        "id": "AndersenFamily",
        "creationDate": 1431620472
      },
      {
        "id": "WakefieldFamily",
        "creationDate": 1431620462
      }
    ]

Além disso, pode encomendar por várias propriedades. Uma consulta que encomenda por várias propriedades requer um índice composto. Considere a consulta seguinte:

    SELECT f.id, f.creationDate
    FROM Families f
    ORDER BY f.address.city ASC, f.creationDate DESC

Esta consulta recupera a família id em ordem crescente do nome da cidade. Se vários itens tiverem o mesmo nome da cidade, a consulta encomendará pela creationDate ordem descendente.

Documentos com campos em falta

As consultas com ORDER BY irão devolver todos os itens, incluindo itens onde o imóvel na cláusula ORDER BY não está definido.

Por exemplo, se executar a consulta abaixo que inclui lastName na Order By cláusula, os resultados incluirão todos os itens, mesmo aqueles que não têm um lastName imóvel definido.

    SELECT f.id, f.lastName
    FROM Families f
    ORDER BY f.lastName

Nota

Apenas o .NET SDK 3.4.0 ou mais tarde e Java SDK 4.13.0 ou posteriormente suporte ORDER BY com tipos mistos. Portanto, se quiser ordenar por uma combinação de valores indefinidos e definidos, deve utilizar esta versão (ou mais tarde).

Não é possível controlar a ordem que diferentes tipos aparecem nos resultados. No exemplo acima, mostrámos como os valores indefinidos eram classificados antes dos valores das cordas. Se, por exemplo, quisesse mais controlo sobre a ordem de valores indefinidos, poderia atribuir a quaisquer propriedades indefinidas um valor de cadeia de "aaaaaa" ou "zzzzzzzz" para garantir que eram em primeiro ou último.

Passos seguintes