Resumo: neste tutorial, aprenderá como ordenar um conjunto de resultados utilizando o MySQL ORDER BY cláusula.
Introdução à ORDEM MySQL POR cláusula
Quando utiliza a instrução SELECT para consultar dados de uma tabela, o conjunto de resultados não é ordenado. Isto significa que as linhas do conjunto de resultados podem estar em qualquer ordem.
Para ordenar o conjunto de resultados, adiciona-se a cláusula ORDER BY à declaração SELECT. O seguinte ilustra a sintaxe do ORDER BY cláusula:
Nesta sintaxe, especifica uma ou mais colunas que deseja ordenar após a cláusula ORDER BY.
O ASC significa ascendente e o DESC significa descendente. Utiliza-se ASC para ordenar o resultado definido em ordem ascendente e DESC para ordenar o resultado definido em ordem descendente.
Esta ORDER BY cláusula ordena o resultado por ordem ascendente:
Code language: SQL (Structured Query Language) (sql)ORDER BY column1 ASC;
E esta ORDER BY cláusula ordena o resultado por ordem descendente:
Code language: SQL (Structured Query Language) (sql)ORDER BY column1 DESC;
Por defeito, a cláusula ORDER BY utiliza ASC se não especificar explicitamente qualquer opção.
Por conseguinte, as seguintes cláusulas são equivalentes:
Code language: SQL (Structured Query Language) (sql)ORDER BY column1 ASC;
and
Code language: SQL (Structured Query Language) (sql)ORDER BY column1;
Se quiser ordenar o resultado definido por múltiplas colunas, especifique uma lista de colunas separadas por vírgulas na cláusula ORDER BY:
Code language: SQL (Structured Query Language) (sql)ORDER BY column1, column2;
É possível ordenar o resultado por uma coluna em ordem ascendente, e depois por outra coluna em ordem descendente:
Code language: SQL (Structured Query Language) (sql)ORDER BY column1 ASC, column2 DESC;
Neste caso, o ORDER BY cláusula:
- First, ordenar o resultado definido pelos valores no
column1em ordem ascendente. - Então, ordenar o resultado ordenado pelos valores na ordem
column2em ordem decrescente. Note-se que a ordem dos valores nocolumn1não mudará neste passo, apenas a ordem dos valores nocolumn2muda.
Nota que a cláusula ORDER BY é sempre avaliada após a cláusula FROM e SELECT.
PEDIDO MYSQL POR EXEMPLOS
Utilizaremos a tabela customers da base de dados de amostras para a demonstração.
A) Usando a cláusula MySQL ORDER BY para ordenar valores numa coluna de exemplo
A consulta seguinte utiliza a cláusula ORDER BY para classificar os clientes pelos valores na coluna contactLastName em ordem ascendente.
Code language: SQL (Structured Query Language) (sql)SELECTcontactLastname,contactFirstnameFROMcustomersORDER BYcontactLastname;
Try It Out
se quiser ordenar os clientes pelo sobrenome na ordem descendente, usa a cláusula DESC após a coluna contactLastname na coluna ORDER BY como se mostra na seguinte consulta:
Code language: SQL (Structured Query Language) (sql)SELECTcontactLastname,contactFirstnameFROMcustomersORDER BYcontactLastname DESC;
Try It Out
B) Utilização da cláusula MySQL ORDER BY para ordenar valores em múltiplas colunas exemplo
Se quiser ordenar os clientes pelo apelido por ordem descendente e depois pelo primeiro nome por ordem ascendente, especifica tanto DESC como ASC na coluna correspondente, como se segue:
Code language: SQL (Structured Query Language) (sql)SELECTcontactLastname,contactFirstnameFROMcustomersORDER BYcontactLastname DESC,contactFirstname ASC;
Try It Out
Neste exemplo, a cláusula ORDER BY ordena primeiro o resultado definido pelo apelido em ordem decrescente e depois ordena o resultado ordenado pelo primeiro nome em ordem ascendente para produzir o conjunto de resultados final.
C) Usando o MySQL ORDER BY para ordenar um resultado definido por um exemplo de expressão
Ver o seguinte orderdetails tabela da base de dados da amostra.
A consulta seguinte selecciona os itens da linha de encomenda da tabela orderdetails. Calcula o subtotal para cada item e ordena o conjunto de resultados com base no subtotal.
Code language: SQL (Structured Query Language) (sql)SELECT orderNumber, orderlinenumber, quantityOrdered * priceEachFROM orderdetailsORDER BY quantityOrdered * priceEach DESC;
Try It Out
Para tornar a consulta mais legível, pode atribuir a expressão na cláusula SELECT cláusula um pseudónimo de coluna e utilizar esse pseudónimo de coluna na cláusula ORDER BY como mostrado na seguinte consulta:
Code language: SQL (Structured Query Language) (sql)SELECT orderNumber, orderLineNumber, quantityOrdered * priceEach AS subtotalFROM orderdetailsORDER BY subtotal DESC;
Try It Out
Neste exemplo, utilizámos subtotal como a coluna alias da expressão quantityOrdered * priceEach e ordenámos o resultado definido pelo subtotal alias.
A coluna alias pode ser utilizada na cláusula ORDER BY porque a cláusula SELECT é avaliada antes da cláusula ORDER BY. Quando a cláusula ORDER BY é avaliada, a coluna alias é acessível.
Using MySQL ORDER BY to sort data using a custom list
The ORDER BY clause allows you to sort data using a custom list by using the FIELD() function.
Ver o seguinte orders tabela da base de dados de amostras.
P>Ponha que pretende ordenar as encomendas de venda com base nos seus estados na seguinte ordem:
- Em processo
- Em espera
- Cancelado
- Resolvido
- Disputado
- Enviado
Para fazer isto, pode usar a função FIELD() para mapear cada estado de ordem para um número e ordenar o resultado pelo resultado da função FIELD():
Try It Out
A seguinte expressão:
Code language: SQL (Structured Query Language) (sql)FIELD(status, 'In Process', 'On Hold', 'Cancelled', 'Resolved', 'Disputed', 'Shipped');
devolve o índice do status na lista 'In Process', 'On Hold', 'Cancelled', 'Resolved', 'Disputed', 'Shipped'.
Por exemplo, se o status for In Process, a função irá retornar 1. Se o status for On Hold, a função retornará 2, e assim por diante.
Neste tutorial, aprendeu como usar o MySQL ORDER BY cláusula para ordenar linhas no resultado definido por uma ou mais colunas em ordem ascendente ou descendente.
- Este tutorial foi útil?
- Sim Não