Este artigo é um artigo espelhado de tradução automática, por favor clique aqui para ir para o artigo original.

Vista: 14301|Resposta: 1

[Fonte] A diferença entre rownum e row_number() em Oracle

[Copiar link]
Publicado em 25/09/2017 16:00:21 | | |
row_number()over(partição por col1, ordem por col2) significa ordenar de acordo com col2 dentro do grupo, e o valor calculado por essa função representa o número de ordem (o único consecutivo dentro do grupo) após cada grupo ser ordenado internamente. A diferença do rownum é que, ao usar o rownum para ordenação, você adiciona um rownum mal feito ao conjunto de resultados e depois o ordena, enquanto row_number() ordena primeiro e depois calcula o número de linha após incluir a cláusula de ordenação.

1. Rownum no oráculo

Usado para numerar as linhas retornadas da consulta, a primeira linha devolvida recebe um 1, a segunda linha é um 2, e assim por diante, esse pseudocampo pode ser usado para limitar o número total de linhas retornadas pela consulta, e o rownum não pode ser precedido pelo nome de nenhuma tabela.

1. rownum para condições de consulta iguais a um certo valor

Se quiser encontrar o primeiro aluno na tabela de alunos, pode usar rownum=1 como condição. No entanto, se você quiser encontrar as informações do segundo aluno na tabela do aluno, não consegue encontrar os dados usando rownum=2. Como rownum começa em 1, mas números naturais acima de 1 são considerados falsos quando rownum é julgado igual a sim, então é impossível encontrar rownum = n(n>1 números naturais).




2. Rownum para condições de consulta maiores que um certo valor

Se você quiser encontrar os registros a partir da segunda linha, ao usar rownum>2 não consegue encontrar os registros, você pode usar os seguintes métodos de subconsulta para resolver o problema. Note que o rownum na subconsulta deve ter um alias, caso contrário o registro não será encontrado, pois o rownum não é uma coluna de uma tabela, e se não houver alias, é impossível saber se o rownum é uma coluna da subconsulta ou uma coluna da consulta principal.




3. rownum para condições de consulta menores que um certo valor

Se você quiser encontrar o registro anterior do terceiro registro, pode obter dois registros usando rownum<3. Obviamente, rownum pensa que a condição de rownum < n (número natural de (n>1) é verdadeira, então você pode encontrar o registro.




4. Rownum e ordenação

O rownum no Oracle é o número de sequência gerado ao recuperar os dados, então, se você quiser especificar os dados da linha rowmun para os dados ordenados especificados, deve prestar atenção a isso.




NOME DE IDENTIFICAÇÃO ROWNUM
---------- ------ ---------------------------------------------------
3 200003 Li San
2 200002 Wang Er
1 200001 Zhang Yi
4 200004 Zhao Si

Pode-se ver queO rownum não é um número de sequência gerado pela coluna do nome。 O sistema atribui o número da linha de registros na ordem em que foram inseridos, e o rowid também é atribuído em ordem. Para resolver esse problema, é necessário usar subconsultas




NOME DE IDENTIFICAÇÃO ROWNUM
---------- ------ ---------------------------------------------------
1 200003 Li San
2 200002 Wang Er
3 200001 Zhang Yi
4 200004 Zhao Si

2. Oráculo row_number ()

1、row_number() over (ordem por col_1[,col_2 ...])
Segundo col_1[,col_2 ...] Sort retorna o conjunto de resultados ordenados e retorna um valor diferente para cada linha.

2、row_number() sobre (partição por col_n[,col_m ...] ordem por col_1[,col_2 ...])
Primeiro, segundo col_n[,col_m ... agrupando, e depois em cada agrupamento de acordo com o col_1[,col_2 ...] ordenar (ascendente) e, finalmente, retornar o conjunto de resultados ordenado

Oracle row_number() instância

1. Use a função row_number() para numerar, como



Princípio: Ordene por PSD primeiro e, após ordenar, numere cada pedaço de dado.

2. Ordenar a ordem em ordem crescente de preço e ordenar cada registro com o seguinte código:



3. Conte o número de pedidos feitos recentemente por cada cliente.




4. Ao usar funções de abertura de janelas como over, a execução do agrupamento e ordenação em over é posterior à execução de "where, group by, order by".



O código acima executa primeiro a cláusula where e, em seguida, numera cada registro após a execução.

3. A diferença entre row_number () e rownum

Ao ordenar com rownum, você adiciona um rownum mal feito ao conjunto de resultados e depois o ordena, enquanto row_number() ordena primeiro e depois calcula o número de linha após incluir a cláusula de ordenação.




Anterior:Será que Xunlei Wanke Cloud está fazendo crowdfunding para usuários como macacos desta vez?
Próximo:O Oracle consulta todas as colunas de uma tabela e seus tipos de dados
Disclaimer:
Todo software, material de programação ou artigos publicados pela Code Farmer Network são apenas para fins de aprendizado e pesquisa; O conteúdo acima não deve ser usado para fins comerciais ou ilegais, caso contrário, os usuários terão todas as consequências. As informações deste site vêm da Internet, e disputas de direitos autorais não têm nada a ver com este site. Você deve deletar completamente o conteúdo acima do seu computador em até 24 horas após o download. Se você gosta do programa, por favor, apoie um software genuíno, compre o registro e obtenha serviços genuínos melhores. Se houver qualquer infração, por favor, entre em contato conosco por e-mail.

Mail To:help@itsvse.com