Função da janela do número da linha do MySQL

Função da janela do número da linha do MySQL
Dentro do MySQL, um método de número de linha () contém um número cronológico para cada linha dentro da partição. É apenas um recurso de janela de algum tipo. A figura de linhas começa em 1 com a figura de linhas dentro da partição. Lembre -se, antes da versão 8.0, MySQL não permite a função Número da linha (), no entanto, oferece uma variável de sessão que ajuda a imitar esse recurso. Vamos entender mais sobre a funcionalidade MySQL linha () ao longo deste guia e produzir um número consecutivo para cada linha da coleção de resultados. No MySQL, os métodos row_number () são usados ​​com as cláusulas seguintes:
  • A cláusula over () será usada dentro dela.
  • Ordens por cláusula organiza o resultado de acordo com a ordem de classificação da coluna mencionada.

Sintaxe:

>> selecione col_name, row_number () sobre (partição por col_name, order by col_name) como row_num de table_name;

Vamos abrir o shell cliente da linha de comando MySQL dos aplicativos e digite a senha para fazer login.

Você precisa criar uma nova tabela ou usar a tabela padrão para começar a trabalhar na função de número da linha. Conforme apresentado na imagem abaixo, temos uma tabela "animais" no esquema "dados" com alguns registros. Vamos buscar seus registros usando a instrução SELECT.

>> Selecione * FROM dados.animais;

Exemplo 01: row_number () usando a cláusula Ordem by

Usaremos a mesma tabela para elaborar alguns exemplos da função do número da linha. Estamos dando um exemplo da função row_number () seguida por sobre over (), enquanto usamos apenas a cláusula de ordem por. Estamos buscando todos os registros enquanto numeramos as linhas de acordo com o pedido da coluna “Price”. Demos o nome "row_num" a uma coluna, que armazenará os números da linha. Vamos tentar o comando abaixo para fazer isso.

>> Selecione *, row_number () sobre (ordem por preço) como row_num de dados.animais;

Ao executar a consulta acima, podemos ver que as linhas foram atribuídas com números de acordo com a ordem de classificação da coluna "Price". Você pode pensar que alguns preços menores devem estar no topo da coluna e deve classificar de acordo com isso. Mas a cláusula da Ordem por Só vê o primeiro dígito ou alfabeto da coluna para classificar os valores.

Vamos executar a mesma consulta seguida pela cláusula da Ordem por enquanto estiver usando a ordem de classificação da coluna "Age". A saída será dada de acordo com a coluna "Age".

>> Selecione *, row_number () sobre (ordem por idade) como row_num a partir de dados.animais;

Exemplo 02: row_number () usando a partição por cláusula

Usaremos a única cláusula de partição na consulta row_number () para verificar os resultados. Usamos a consulta selecionada para buscar os registros seguidos por Row_Number () e cláusula sobre o Over, enquanto particionamos a tabela de acordo com a coluna "Color". Execute o comando Anexado abaixo no shell de comando.

>> Selecione *, row_number () sobre (partição por cor) como row_num de dados.animais;

Você pode ver no resultado que a numeração de linhas foi atribuída em partições, de acordo com a ordem de classificação das cores. Como temos 4 valores para a cor "preto" que leva 4 linhas. É por isso que tem números de quatro fileiras a partir de 1 a 4 e vice-versa.

Experimente o mesmo exemplo, particionado pela coluna "Gênero" desta vez. Como sabemos, temos apenas dois sexos nesta tabela, é por isso que 2 partições serão formadas. As fêmeas ocupam 9 linhas, é por isso que tem numeração de linha de 1 a 9. Embora os homens tenham 8 valores, é por isso que tem 1 a 8.

>> Selecione *, row_number () sobre (partição por gênero) como row_num de dados.animais;

Exemplo 03: row_number () usando a partição por & order by

Fizemos os dois exemplos acima na linha de comando MySQL, agora é hora de fazer o exemplo row_number () no MySQL Workbench 8.0. Então, abra o MySQL Workbench 8.0 dos aplicativos. Conecte a bancada de trabalho do MySQL com o banco de dados raiz do host local para começar a trabalhar.

No lado esquerdo da bancada de trabalho MySQL, você encontrará a barra de esquema, sopra o navegador. Neste bar de esquema, você encontrará a lista de bancos de dados. Na lista de bancos de dados, você terá tabelas diferentes e procedimentos armazenados, como pode ver na imagem abaixo. Temos tabelas diferentes em nosso banco de dados 'dados'. Abriremos a tabela 'Order1' usando o comando select na área de consulta para começar a usá -la para row_number () implementação da função.

>> Selecione * FROM dados.ordem1;

A tabela "Order1" foi exibida na visualização da grade, como mostrado abaixo. Você pode ver que possui 4 campos de coluna, ID, região, status e ordem. Estaremos buscando todos os registros desta tabela enquanto usamos a Ordem e a cláusula de partição por partição, ambos ao mesmo tempo.

Na área de consulta do MySQL Workbench 8.0, digite a consulta abaixo do displayed. A consulta foi iniciada com a cláusula selecionada, buscando todos os registros seguidos pela função Row_Number () junto com a cláusula Over Over. Após a cláusula Over, especificamos a coluna "Status" prosseguida pela declaração "Partição por" para dividir a tabela em partições de acordo com esta tabela. A cláusula de ordem por. Os números da linha serão mantidos na coluna "Row_num". Toque no ícone flash para executar este comando.

O resultado abaixo do discurso será mostrado. Primeiro de tudo, a tabela foi segregada em duas partes de acordo com os valores da coluna "Status". Depois disso, foi apresentado na ordem decrescente da 'região' e as partições foram atribuídas com os números da linha.

Conclusão:

Por fim, concluímos todos os exemplos necessários para usar a função Row_Number () no MySQL Workbench e MySQL Command-Line Client Shell.