Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

bagaimana cara memilih catatan genap dari tabel di Oracle?

Ini tidak berfungsi karena:untuk baris pertama ROWNUM adalah 1 dan, dalam hal ini, MOD(ROWNUM,2) adalah 1 dan karena WHERE . Anda pernyataannya adalah MOD(ROWNUM,2)=0 maka ini dikurangi menjadi 1=0 dan baris dibuang. Baris berikutnya kemudian akan diuji terhadap ROWNUM dari 1 (karena baris sebelumnya tidak lagi dalam output dan tidak akan memiliki nomor baris), yang lagi-lagi akan gagal dalam pengujian dan dibuang. Ulangi, mual iklan dan semua baris gagal WHERE tes dan dibuang.

Jika Anda mencoba mendapatkan baris ganjil dengan cara ini menggunakan WHERE MOD(ROWNUM,2)=1 maka itu akan mengembalikan baris pertama saja dan baris kedua, dan selanjutnya, akan gagal dalam pengujian dan tidak akan pernah disertakan dalam kueri.

Seperti yang disarankan Vijaykumar Hadalgi, Anda perlu memilih ROWNUM dalam sub-kueri (di mana ia dapat menomori semua baris tanpa klausa where untuk membatasinya) dan kemudian di kueri luar lakukan pengujian untuk membatasi baris:

SELECT ename, job
FROM   (
  SELECT ename,
         job,
         ROWNUM AS row_id             -- Generate ROWNUM second.
  FROM   (
    SELECT ename, job
    FROM   Emp
    ORDER BY ename                    -- ORDER BY first.
  )
)
WHERE  MOD( row_id, 2 ) = 0;          -- Filter third.

SQLFIDDLE



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Manajer Perusahaan Kontrol FMW 11g di R12.2

  2. Operator pivot Oracle

  3. Peringatan Waktu Menunggu Basis Data EM12c

  4. Memahami segmen Lob (SYS_LOB) di Oracle?

  5. Contoh Skema di GitHub