Este tutorial explica a cláusula MySQL ORDER BY e a sua utilização com ambas as opções ASC e DESC. Nós descreveremos esta declaração MySQL com a ajuda de exemplos simples.
1. ORDER BY Clause Syntax
2. ORDER BY W/O ASC ou DESC
3. ORDER BY DESC
4. ORDER BY Relative Position
5. ORDER BY Two Fields ASC & DESC
Vamos agora percorrer cada uma das seções uma a uma.
MySQL ORDER BY Clause
O comando MySQL SELECT não retorna um resultado ordenado definido por padrão. Portanto, para ordenar a saída, você tem que anexar a cláusula ORDER BY na consulta SELECT. Podemos conseguir o seguinte utilizando a cláusula ORDER BY:
- Realizar a ordenação dos registos por um único/múltiplos campos
- Selecionar as linhas por colunas distintas em ordem ascendente (ASC) ou descendente (DESC).
O seguinte ilustra a sintaxe da cláusula ORDER BY:
Sintaxe
# MySQL ORDER BY ClauseSELECT field1, field2,...FROM target_tableORDER BY field1 , field2 ,...
A cláusula ORDER BY por padrão realiza a ordenação em ordem crescente. O termo ASC é um acrônimo para aumentar enquanto DESC significa descendente. Para DESC, você tem que mencioná-lo na sua consulta SELECT.
Por favor note que você pode até mesmo especificar uma expressão com o ORDER BY no MySQL. Além disso, ambas as opções ASC e DESC são opcionais a esta instrução.
Aqui estão alguns exemplos de exercícios para prática.
MySQL ORDER BY Exemplos de Cláusula
Vejamos como utilizar a cláusula ORDER BY com consultas MySQL SELECT.
Usando ordem por sem a opção asc/desc
Para demonstrar, vamos primeiro criar uma tabela chamada Sample e preenchê-la com alguns dados de teste.
CREATE TABLE Sample ( sample_id int NOT NULL, sample_name VARCHAR(20), vendor_name VARCHAR(20), sample_size INT );
Próximo, vamos inserir alguns dados dummy para o nosso teste.
Após isso, precisamos verificar o conteúdo da nossa tabela Sample. Veja abaixo.
SELECT *FROM Sample;
A saída de Its é a seguinte:
Agora, vamos exercitar a cláusula ORDER BY no arquivo “vendor_name”. E, vamos observar o conjunto de resultados recebido do banco de dados MySQL:
SELECT *FROM SampleORDER BY vendor_name;
Você terá um resultado mostrando a saída abaixo:
Você pode avaliar a partir do conjunto de resultados acima que a ordenação ocorreu na ordem ascendente padrão.
Ordenar em ordem descendente
Neste exemplo, vamos demonstrar a cláusula ORDER BY para ordenar na ordem descendente. Para isso, teremos que especificá-la explicitamente.
Aqui está a instrução MySQL para ordenar por ordem decrescente:
SELECT *FROM SampleORDER BY vendor_name DESC;
A saída de SELECT é:
Ordenar por campo numa posição relativa
É possível utilizar a cláusula MySQL ORDER BY para ordenar por um campo numa posição RELATIVA.
Quando especificamos nomes de colunas na consulta SELECT, o primeiro campo está na posição um, o segundo na posição dois, e assim por diante. Além disso, podemos validar este facto utilizando um exemplo.
Aqui está uma instrução SELECT que exibe campos e ordena por uma posição relativa.
SELECT # pos_1 pos_2 pos_3 pos_4 sample_id, sample_name, vendor_name, sample_sizeFROM SampleORDER BY 4 DESC;
Aqui está o conjunto de resultados que você obtém após executar o comando acima:
Você pode ver o MySQL ordenado por campo sample_size que corresponde à quarta coluna.
Usando ORDER BY para ordenar em duas colunas
Tínhamos mencionado anteriormente que você poderia usar ORDER BY em um ou mais campos. Neste caso, o MySQL trata o primeiro campo como primário e o segundo como secundário. Portanto, primeiro ordena o primário e depois o segundo.
Hence, neste exemplo, vamos demonstrar ORDER BY em duas colunas, um campo como ASC, e outro DESC. Também, precisamos inserir mais registros para mostrar que a segunda coluna também fica ordenada.
Pode ignorar a instrução INSERT dada no início acima e usar a abaixo.
Agora, temos algumas linhas com os mesmos nomes de fornecedores mas tamanhos de amostra variados. E, agora vamos ordenar com base nos campos vendor_name (primário) e sample_size (secundário).
SELECT sample_id, sample_name, vendor_name, sample_sizeFROM SampleORDER BY vendor_name ASC, sample_size DESC;
Este comando MySQL produz este resultado:
Você pode ver todos os valores no campo primário ordenados na ordem ascendente. E, é também evidente pela saída que a ordenação (em DESC) também ocorreu na segunda.
Agora, vamos descobrir qual seria o resultado, se tivéssemos ordenado apenas no nome do fornecedor.
SELECT sample_id, sample_name, vendor_name, sample_sizeFROM SampleORDER BY vendor_name ASC;
Este comando irá render como:
Vemos pelo resultado acima que as linhas pertencentes ao Google e Twitter não ordenaram em seus tamanhos de amostra.
Esperamos que depois de terminar este tutorial, você se sinta confortável em usar a cláusula MySQL ORDER BY. Entretanto, você pode praticar mais com exemplos para ganhar confiança.
Apeso disso, para aprender SQL do zero à profundidade, leia nosso tutorial passo a passo do MySQL.