Categories
Banco de dados Tutoriais

Como listar resultados das tabelas com linhas numeradas no MySQL

Veja como numerar cada linha do resultado de uma query no MySQL. A solução pode ser implementada com uma saída pós processada ou com o uso de uma variável SQL.
mysql numbered lines tables
Neste texto, vou mostrar 2 maneiras bem objetivas e práticas para obter os resultados de uma query (ou consulta) MySQL em linhas numeradas, dentro de uma tabela.

Como obter uma relação numerada de itens de uma tabela via linha de comando

Na linha de comando do Linux ou Unix, você pode combinar a execução de código MySQL com o comando cat -n, conforme é possível observar no exemplo abaixo:

mysql -u root -p -N -e "SELECT nome, credito FROM minhaTabela" tutorial | cat -n
Enter password: 
     1	Geoffrey Rojas	9.33
     2	Brenda N. Reynolds	9.03
     3	Unity Peterson	9.19
     4	Gay Warren	9.11
     5	Hedda E. Kaufman	9.71
     6	Audrey X. Silva	9.21
     7	Myra J. Wright	9.49
     8	Wilma Bird	9.45
     9	Thaddeus P. Shaw	9.06

Com este método, não é preciso entrar no MySQL para conseguir realizar a tarefa.
Vamos dissecar o comando?

  1. mysql -u root -p— início clássico para entrar no cliente MySQL, como root. Como a senha não é fornecida na linha de comando, ela será pedida a seguir.
  2. -N— faz com que a saída do comando não exiba os nomes das colunas.
  3. -e— executa o comando, que segue entre aspas e sai do cliente MySQL. Opcionalmente, você pode usar a variante --execute.
  4. "SELECT nome, credito FROM minhaTabela"query ou consulta a ser executada.
  5. tutorial— banco de dados a ser inquirido.
  6. | cat -n— direciona a saída ao comando cat. A opção -n especifica que cada linha deverá ser contada e numerada.

Neste caso, portanto, quem numera as linhas não é o MySQL, mas o utilitário cat.
Em listas muito grandes, este método permite usar o comando grep, para filtrar os resultados.
Se você tem interesse em saber mais sobre como executar queries MySQL da linha de comando do Linux/Unix, leia este artigo.

Use uma variável SQL para obter uma lista numerada

Uma alternativa inteligente, para solucionar o problema é usar uma variável auto incrementável para listar as linhas numeradas.
Esta solução, ao contrário da anterior, pede que você execute os comandos de dentro do cliente MySQL.
Veja o exemplo:

SET @n = 0;
Query OK, 0 rows affected (0.00 sec)

SELECT @n := @n+1 AS ordem, nome, credito, debito FROM minhaTabela;
+-------+-----------------------+---------+--------+
| ordem | nome                  | credito | debito |
+-------+-----------------------+---------+--------+
|     1 | Lani Z. Lawrence      | 4.70    | 2.01   |
|     2 | Geoffrey Rojas        | 9.33    | 6.09   |
|     3 | Holly Mcknight        | 3.79    | 9.84   |
|     4 | Emerson F. Tate       | 6.09    | 8.57   |
|     5 | Alyssa A. Goodman     | 3.29    | 4.73   |
|     6 | Kibo H. Cruz          | 8.52    | 6.41   |
|     7 | May Hoffman           | 5.51    | 2.40   |
|     8 | Heidi F. Lawson       | 8.37    | 1.42   |
|     9 | Isaac U. Herring      | 6.85    | 1.93   |
|    10 | Amanda Roberson       | 5.97    | 9.47   |
|    11 | Oren M. Tanner        | 4.05    | 9.96   |
|    12 | Wyatt Becker          | 2.81    | 2.81   |
+-------+-----------------------+---------+--------+
12 rows in set (0.00 sec)

Dissecando o comando:

  1. SET @n = 0; — define a variável @n com o valor 0.
  2. SELECT @n := @n+1 AS ordem, nome, credito, debito FROM minhaTabela; — a segunda linha de comando é a responsável pela confecção e exibição da lista.

Se você gostaria de entender melhor o uso de variáveis no MySQL, leia este tutorial.

By Elias Praciano

Autor de tecnologia (livre, de preferência), apaixonado por programação e astronomia.
Fã de séries, como "Rick and Morty" e "BoJack Horseman".
Me siga no Twitter e vamos trocar ideias!

2 replies on “Como listar resultados das tabelas com linhas numeradas no MySQL”

Ola, poderia-me ajudar neste exercicio?

Numa tabela com seguinte formatação:

campo1 campo2 campo3
1
2
3 X
4

Como posso ir buscar o valor de ‘X’ que está no campo2 na linha 3?

A tabela ficou desformatada, mas o ‘X’ que preciso saber está no campo2 na linha 3. Esses numeros sao apenas numeros de cada linha, nao fazem parte do interior da tabela.

Agradeço uma resposta

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.