sql >> Databáze >  >> RDS >> Oracle

Oracle/SQL:Proč dotaz SELECT * FROM záznamy WHERE rownum>=5 AND rownum <=10 - vrací nula řádků

V Oracle jsou hodnoty Rownum přiřazeny po fázi filtrování dotazu – nejsou to řádky tabulky, jsou to řádky sady výsledků dotazu.

Takže první řadě, která se vrátí, bude vždy přiděleno rownum 1, druhé řadě, která se vrátí rownum 2 atd.

Hodnota rownum se zvýší až po jejím přiřazení, takže jakýkoli dotaz jako

select * from t where ROWNUM > 1

nikdy vrátit jakékoli výsledky. Tento dotaz říká 'Nechci vidět první řádek, který se mi vrátí, pouze ty následující', což je svým způsobem paradox, takže se nic nevrátí.

Další podrobnosti naleznete v části Zeptejte se Toma:On ROWNUM a Limiting Results.



  1. Po instalaci na Mac resetujte kořenové heslo MySQL pomocí příkazu ALTER USER

  2. Jak mohu vymazat mezipaměť dotazů SQL Server?

  3. jak mohu vytvořit nový soubor XML z existující databáze v databázi PostgreSQL pomocí javy

  4. Vývoj PostgreSQL pro Windows, část 2