sql >> Database >  >> RDS >> Oracle

selecteer rownum uit salaris waarbij rownum=3;

Oracle wijst waarden opeenvolgend toe aan ROWNUM terwijl rijen worden geproduceerd door de query - dus de eerste opgehaalde rij krijgt ROWNUM=1, de tweede opgehaalde rij krijgt ROWNUM=2, de derde opgehaalde rij krijgt ROWNUM=3, enz. Let op - voor een rij toe te wijzen ROWNUM=3 twee voorgaande rijen MOETEN worden opgehaald. En dit is de reden waarom uw zoekopdracht geen rijen retourneert. U vraagt ​​de database om de opgehaalde derde rij, maar rijen 1 en 2 zijn nooit opgehaald.

Probeer de volgende zoekopdrachten uit om dit te demonstreren:

SELECT S.* FROM SALARY S;          -- Should return all rows
SELECT ROWNUM, S.* FROM SALARY S;  -- Should return all rows with ROWNUM prepended
SELECT ROWNUM, S.* FROM SALARY WHERE ROWNUM=3;  -- Should return no rows

Probeer het volgende om uw probleem te omzeilen:

SELECT ROW_NUMBER FROM
  (SELECT ROWNUM AS ROW_NUMBER, S.* FROM SALARY S)
  WHERE ROW_NUMBER = 3;

Deel en geniet.



  1. Oracle 12c Enterprise Edition installeren op Windows 7

  2. Hoe het resultaat van Oracle SQL in een bestand in Windows uit te voeren?

  3. Hoe MySQL te beveiligen:deel één

  4. COUNT() versus COUNT_BIG() in SQL Server:wat is het verschil?