Oracle
 sql >> Database >  >> RDS >> Oracle

Oracle/SQL:perché la query SELECT * FROM record WHERE rownum>=5 AND rownum <=10 - restituisce zero righe

In Oracle, i valori Rownum vengono assegnati dopo la fase di filtraggio della query:non sono righe della tabella, sono righe del set di risultati della query.

Quindi la prima riga che ritorna sarà sempre data rownum 1, la seconda riga che ritorna rownum 2, ecc.

Il valore rownum viene incrementato solo dopo che è stato assegnato, quindi qualsiasi query come

select * from t where ROWNUM > 1

mai restituire qualsiasi risultato. Questa query dice "Non voglio vedere la prima riga che mi viene restituita, solo quelle successive", il che è una specie di paradosso, quindi non viene restituito nulla.

Vedi Chiedi a Tom:On ROWNUM e Limitare i risultati per maggiori dettagli.