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

vælg rownum fra løn hvor rownum=3;

Oracle tildeler værdier til ROWNUM sekventielt, efterhånden som rækker produceres af forespørgslen - således får den første hentede række ROWNUM=1, den anden hentede række får ROWNUM=2, den tredje hentede række får ROWNUM=3 osv. Bemærk - for en række for at blive tildelt ROWNUM=3 SKAL to foregående rækker hentes. Og det er derfor, din forespørgsel ikke returnerer nogen rækker. Du beder databasen om den tredje række hentet - men række 1 og 2 er aldrig blevet hentet.

For at demonstrere, prøv at køre følgende forespørgsler:

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

For at løse dit problem, prøv følgende:

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

Del og nyd.



  1. Sådan droppes tabeller og kolonner med SQL

  2. Rediger tabelrækker/registreringer i SQL Server Management Studio ( SSMS) - SQL Server vejledning / TSQL vejledning del 18

  3. Postgres tabel kolonne navn begrænsninger?

  4. Hvorfor forpligter SQL*Plus ved exit?