encomendar os resultados da pesquisa

A cláusula ORDER BY controla a ordem pela qual as linhas são devolvidas ou processadas. Ele pode ser usado em qualquer seletionquery, incluindo um operando de INSERT ou UPSERT, bem como com DELETE e UPDATEafirmações.

Sinopse

ORDERBYa_exprASCDESCNULLSFIRSTLAstprimarykeytable_nameindextable_name@index_nameASCDESC,

Parâmetros

O ORDER BY cláusula tem uma lista separada por vírgulas de ordenação especificações.Cada especificação de encomenda é composta por uma selecção de colunas seguida opcionalmente pela palavra-chave ASC ou DESC.

Cada seleção de coluna pode assumir uma das seguintes formas:

  • Uma simples seleção de coluna, determinado da seguinte forma:
    1. O nome de um rótulo de coluna configurado com AS anteriormente em SELECT cláusula. Isto usa o valor calculado pela cláusula SELECT como chave de triagem.
    2. um número inteiro positivo, designando uma das colunas na fonte de dados, quer a cláusula FROM da cláusula SELECT, quando ocorre, quer a tabela a ser escrita por DELETE ou UPDATE. Isto usa o valor de entrada correspondente da fonte de dados para usar como chave de ordenação.
    3. uma expressão escalar arbitrária. Isto usa o resultado de avaliar essa expressão como a chave de ordenação.
  • A notação PRIMARY KEY <table_name>. Isto usa a(s) coluna (s) da (S) chave (s) principal (Is) da tabela indicada como chave de ordenação. Esta tabela deve fazer parte da fonte de dados.
  • a notação INDEX <table_name>@<index_name>. Isto usa as colunas indexadas pelo índice dado como chave de ordenação. Esta tabela deve fazer parte da fonte de dados.

A Palavra-chave opcional ASC depois de uma seleção de coluna indica para usar a chave de ordenação como-é, e portanto não tem significado.

A Palavra-chave opcional DESC inverte a direcção da(s)coluna (s) seleccionada (s) pela selecção que precede imediatamente.

CockroachDB suportaNULLS FIRST/NULLS LAST em ORDER BY cláusulas de compatibilidade com a sintaxe de ordenação de linhas PostgreSQL.

Nota:

Suporte para NULLS LAST é atualmente apenas sintaxe. Se especificar NULLS LAST numa cláusula ORDER BY, CockroachDB utiliza NULLS FIRST e não devolve um erro.

preservação da ordem

em geral,a ordem dos resultados intermédios de uma consulta não é garantida, mesmo que seja especificado ORDER BY. Por outras palavras, a cláusula ORDER BY só é eficaz na declaração de alto nível. Por exemplo, ele é ignorado pelo queryplanner quando presente em uma sub-consulta em uma cláusula FROM como segue:

ícones/botões/cópia
> SELECT * FROM a, b ORDER BY a.x; -- valid, effective> SELECT * FROM (SELECT * FROM a ORDER BY a.x), b; -- ignored, ineffective

no Entanto, quando a combinação de consultas junto withsub-consultas,algumas combinações de tornar o ORDER BY cláusula em um sub-querysignificant:

  1. A ordenação do operando de um WITH ORDINALITY cláusula(dentro de FROM operando de um SELECT cláusula) é preservado,para controlar a numeração das linhas.
  2. a ordenação do operando de uma cláusula stand-alone LIMIT ou OFFSET (withina FROM operando de uma cláusula SELECT) é preservada, para determinar quais linhas são mantidas no resultado.
  3. a ordenação da fonte de dados para uma declaração INSERTou uma declaração UPSERT que também usaLIMIT é preservada, para determinar quais linhas são processadas, mas não a sua ordem.
  4. a ordenação indicada para uma declaração UPDATE ou DELETE que também usa LIMIT é usada para determinar quais linhas são processadas, mas não a sua ordem.(Esta é uma extensão CockroachDB.)
  5. the ordering of a sub-query used in a scalar expressionis preserved.

por exemplo, usando WITH ORDINALITY:

ícones/botões/cópia
> SELECT * FROM (SELECT * FROM a ORDER BY a.x) WITH ORDINALITY; -- ensures that the rows are numbered in the order of column a.x.

Por exemplo, usando um stand-alone LIMIT cláusula FROM:

ícones/botões/copiar

Por exemplo, usando uma sub-consulta em contexto escalar:

ícones/botões/copiar

Ordenação de linhas sem FIM POR

Sem ORDER BY, linhas são processadas ou devolvido em anon-ordem determinista. “Não-determinístico” significa que o ordenador real pode depender do plano lógico, da ordem dos dados no disco, da topologia do cluster CockroachDB, e é geralmente variável ao longo do tempo.

Classificação através de simples seleções de coluna

Considerando a seguinte tabela:

ícones/botões/cópia
> CREATE TABLE a(a INT);> INSERT INTO a VALUES (1), (3), (2);

As seguintes afirmações são equivalentes:

ícones/botões/cópia
+---------+| a |+---------+| 1 || 2 || 3 |+---------+(3 rows)

Note que a ordem das regras assunto. Se houver ambiguidade, a prioridade AS aliasestake sobre as colunas de fonte de dados, por exemplo:

icon / buttons / copy

também é possível ordenar usando uma expressão escalar arbitrária calculada para cada linha, por exemplo:

ícones/botões/cópia
> SELECT a, b FROM ab ORDER BY a + b; -- orders by the result of computing a+b.

Classificação utilizando várias colunas

Quando mais do que um pedido de especificação é dada, mais tarde especificações são usedto linhas de ordem que são iguais sobre as especificações anteriores, por exemplo:

ícones/botões/cópia
> CREATE TABLE ab(a INT, b INT);> SELECT a, b FROM ab ORDER BY b, a;

Este classifica os resultados por coluna b, e, em seguida, se há multiplerows que têm o mesmo valor na coluna b, ele irá, em seguida, a fim theserows pela coluna a.

invertendo a ordem de ordenação

A Palavra-chave DESC (“descendente”) pode ser adicionada após uma especificação de ordenação para alterar a sua ordem. Isto pode ser especificado separadamente para cada especificação, por exemplo:

ícones/botões/cópia
> CREATE TABLE ab(a INT, b INT);> SELECT a, b FROM ab ORDER BY b DESC, a; -- sorts on b descending, then a ascending.

a Classificação em ordem de chave primária

O ORDER BY PRIMARY KEY notação garante que os resultados arepresented na ordem de chave primária.

A vantagem é que, para consultas usando o índice principal,o que garante a ordem ao mesmo tempo que garante não haverá anadditional classificação de computação para alcançá-lo, por exemplo:

ícones/botões/cópia
> CREATE TABLE kv(k INT PRIMARY KEY, v INT);> SELECT k, v FROM kv ORDER BY PRIMARY KEY kv; -- guarantees ordering by column k.

Se uma chave primária utiliza a palavra-chave DESC já, em seguida, sua meaningwill ser invertidas (cancelada) se a ORDER BY cláusula também usaDESC, por exemplo:

ícones/botões/copiar

Ordenar em ordem de índice

O ORDER BY INDEX notação garante que os resultados são presentedin o fim de um determinado índice.

A vantagem é que, para consultas usando esse índice, thisguarantees a ordem ao mesmo tempo que garante não haverá anadditional classificação de computação para alcançá-lo, por exemplo:

ícones/botões/cópia
> CREATE TABLE kv(k INT PRIMARY KEY, v INT, INDEX v_idx(v));> SELECT k, v FROM kv ORDER BY INDEX kv@v_idx; -- guarantees ordering by column v.

Se um índice utiliza a palavra-chave DESC já, em seguida, sua meaningwill ser invertidas (cancelada) se a ORDER BY cláusula também usaDESC, por exemplo:

ícones/botões/copiar

Ordenação de linhas em instruções DML

Quando usando ORDER BY com um INSERT,UPSERT, UPDATE ouDELETE (i.e., uma declaração DML), a cláusula ORDER BY isignored se não for usada em combinação com LIMIT e / ouOFFSET.

A combinação de ambos ORDER BY e LIMIT / OFFSET determina quais as linhas da entrada que são usadas para inserir, actualizar ou eliminar os tabledados, mas não determina em que ordem a mutação ocorre.

por exemplo, usando LIMIT em INSERT:

ícone / botões / cópia
> INSERT INTO a SELECT * FROM b ORDER BY b.x LIMIT 1; -- ensures that only the first row of b in the order of column b.x -- is inserted into a.

A razão pela qual ORDER BY não controla a ordem final das linhas na tabela é que a ordenação das linhas na Tabela alvo é determinada pelos seus índices primário e secundário.

para ordenar o resultado da cláusula RETURNING, ver a ordenação do resultado dos apagamentos.

ordenando o resultado dos apagamentos

para ordenar o resultado de uma declaração DELETE, use:

icon / buttons / copy
> WITH a AS (DELETE ... RETURNING ...) SELECT ... FROM a ORDER BY ...

por exemplo, veja ordenar e retornar as linhas apagadas.

Veja também:

  • Consultas de Seleção
  • Expressões Escalares
  • INSERT
  • UPSERT
  • DELETE
  • UPDATE

esta página Foi útil?

Sim Não

Deixe uma resposta

O seu endereço de email não será publicado.