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

Oracle, Hubungkan Dengan rownum

Penjelasan dalam jawaban Krokodilko salah. Anda dapat mengabaikan tanda "Jawaban Benar" dan banyak suara positif, itu masih salah. Sangat menarik bahwa dia pergi sebagai latihan kasus yang membuktikan bahwa penjelasannya salah.

CONNECT BY kueri tidak berfungsi "seolah-olah" tabel baru (atau baris keluaran baru dari SELECT pernyataan, bagaimanapun) dihasilkan pada setiap langkah. Ini adalah kesalahan dalam argumen.

Sebaliknya, hanya ada satu rowset dihasilkan secara keseluruhan (di semua langkah). Memang benar bahwa baris baru ditambahkan berdasarkan baris yang dihasilkan pada langkah sebelumnya; tetapi rowset itu sendiri adalah satu, dan tumbuh, bukan rowset yang terpisah.

Ini sangat relevan dengan ROWNUM . ROWNUM ditugaskan ke baris dalam satu set baris "hasil", dimulai dengan 1. Dalam CONNECT BY kueri, hanya ada satu baris, dan ROWNUM pergi dari 1 ke n dalam urutan yang meningkat.

Jika jawaban Krokodilko benar, maka ROWNUM akan restart pada 1 pada setiap langkah. Ini jelas bukan masalahnya:mari kita coba pada kueri hierarkis "standar".

select     empno, ename, mgr, level, rownum
from       scott.emp
start with mgr is null
connect by prior empno = mgr
;

     EMPNO ENAME             MGR      LEVEL     ROWNUM
---------- ---------- ---------- ---------- ----------
      7839 KING                           1          1
      7566 JONES            7839          2          2
      7788 SCOTT            7566          3          3
      7876 ADAMS            7788          4          4
      7902 FORD             7566          3          5
      7369 SMITH            7902          4          6
      7698 BLAKE            7839          2          7
      7499 ALLEN            7698          3          8
      7521 WARD             7698          3          9
      7654 MARTIN           7698          3         10
      7844 TURNER           7698          3         11
      7900 JAMES            7698          3         12
      7782 CLARK            7839          2         13
      7934 MILLER           7782          3         14



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Desain laporan lahir di Eclipse dengan filter sublaporan

  2. Cari tahu apakah string hanya berisi karakter ASCII

  3. Paging dengan Oracle

  4. Simpan hasil kueri minus dengan beberapa kolom dalam variabel di Oracle PL/SQL

  5. Pelanggaran batasan unik selama penyisipan:mengapa? (Peramal)