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

načítání dat pomocí rownum v oracle

rownum je pseudosloupec, který počítá řádky v sadě výsledků po použití klauzule where.

  SELECT table_name
    FROM user_tables
    WHERE rownum > 2;
TABLE_NAME                     
------------------------------

0 rows selected

Tento dotaz však vždy vrátí nula řádků, bez ohledu na počet řádků v tabulce.

Abychom toto chování vysvětlili, musíme pochopit, jak Oracle zpracovává ROWNUM. Při přiřazování ROWNUM k řádku začíná Oracle na 1 a zvyšuje hodnotu pouze při výběru řádku; to znamená, když jsou splněny všechny podmínky v klauzuli WHERE. Protože naše podmínka vyžaduje, aby ROWNUM bylo větší než 2, nejsou vybrány žádné řádky a ROWNUM se nikdy nezvyšuje nad 1.

http://blog.lishman.com/2008/03/rownum.html

další odkaz stackoverflow

Upraveno

tento odstavec jsem našel na oracle web, který je mnohem lepší

Podmínky testování pro hodnoty ROWNUM větší než kladné celé číslo jsou vždy nepravdivé. Tento dotaz například nevrací žádné řádky:

SELECT * FROM employees
    WHERE ROWNUM > 1;

Prvnímu načtenému řádku je přiřazeno ROWNUM 1 a podmínka je nepravdivá. Druhý řádek, který má být načten, je nyní prvním řádkem a je mu také přiřazeno ROWNUM 1 a podmínka je nepravdivá. Všechny řádky následně nesplní podmínku, takže nejsou vráceny žádné řádky.

Můžete také použít ROWNUM k přiřazení jedinečných hodnot každému řádku tabulky, jako v tomto příkladu:



  1. Formát sysjobhistory datum, čas a trvání sloupce na SQL Server

  2. SQL Oracle Counting Clusters

  3. Asynchronní úlohy s Django a celerem

  4. existuje nějaká funkce pro překlad dat v sql