Shanghai Tengke Education Dameng banco de dados de treinamento de produtos secos compartilhando o uso de ROWNUM no banco de dados Dameng

ROWNUM é uma coluna falsa que representa o número da linha da consulta da tabela ou o número de linhas no conjunto de resultados da consulta de junção. Ele será alocado como 1, 2, 3, 4, ... N, onde N é o número de linhas. Usando ROWNUM, podemos limitar o número de linhas retornadas pela consulta.

 

Vamos pegar a tabela EMPLOYEE no modo RESOURCES na biblioteca de instâncias BOOKSHOP como exemplo

Os dados completos da tabela são os seguintes:

 

 

Se quisermos apenas ver as primeiras 5 linhas de dados, podemos escrever

SELECT * FROM RESOURCES.EMPLOYEE WHERE rownum <6;

 

 

Deve-se observar que um valor ROWNUM não é atribuído permanentemente a uma linha. Não há rótulo para uma linha na tabela. Você não pode consultar a linha cujo valor ROWNUM é 5. O valor de ROWNUM só aumentará quando for alocado e o valor inicial será 1. Ou seja, somente depois que uma linha for satisfeita, o valor de ROWNUM aumentará em 1, caso contrário, ele manterá apenas o valor original. Portanto, a instrução a seguir não pode retornar dados a qualquer momento.

 

SELECIONE * EM RESOURCES.EMPLOYEE WHERE ROWNUM> 6;

SELECIONE * EM RESOURCES.EMPLOYEE ONDE ROWNUM = 6;

 

 

Uma função importante do ROWNUM é controlar o tamanho do conjunto de resultados retornado, o que pode evitar que as consultas sejam classificadas no disco. Porque o valor ROWNUM é atribuído depois que o predicado da consulta é analisado e antes de qualquer classificação e agregação. Portanto, precisamos prestar atenção ao uso de ROWNUM na classificação e agregação, e pode obter resultados inesperados. Por exemplo, se quisermos obter os cinco funcionários mais velhos

SELECIONE * EM RESOURCES.EMPLOYEE ONDE ROWNUM <6ORDER BY BIRTHDATE;

 

 

A instrução acima exibirá apenas as 5 primeiras linhas da tabela EMPLOYEE na classificação BIRTHDATE, nem todos os dados da tabela serão classificados por BIRTHDATE e produzirão as primeiras 5 linhas. Para obter o último, você precisa usar a seguinte instrução:

SELECT * FROM (SELECT * FROM RESOURCES.EMPLOYEE ORDER BY BIRTHDATE) WHERE ROWNUM <6;

或者 SELECIONE OS 5 PRINCIPAIS * EM RECURSOS. ORDEM DO EMPREGADO ATÉ ANIVERSÁRIO;

Os resultados são os seguintes:

 

 

Em relação ao uso de ROWNUM, as seguintes restrições também devem ser observadas:

1 Na consulta, ROWNUM pode ser comparado e operado com qualquer expressão numérica, mas não pode aparecer em uma expressão booleana contendo OR, caso contrário, um erro será relatado;

 

2 ROWNUM só pode aparecer em subconsultas não correlacionadas e não pode ser usado em subconsultas relacionadas, caso contrário, um erro será relatado;

 

3 - Em subconsultas não correlacionadas, ROWNUM só pode atingir a mesma função que TOP, portanto, as subconsultas não podem conter ORDER BY e GROUP BY;

 

4 - O sub-predicado onde ROWNUM está localizado só pode ter a seguinte forma: ROWNUM op exp, o tipo de exp só pode ser números imediatos, parâmetros e valores de variáveis, op ∈ {<, <=,>,> =, =, <>}.

Acho que você gosta

Origin blog.csdn.net/qq_42726883/article/details/108463668
Recomendado
Clasificación