Acest articol este un articol oglindă al traducerii automate, vă rugăm să faceți clic aici pentru a sări la articolul original.

Vedere: 15626|Răspunde: 2

[Sursă] Problema duplicată a datelor cu interogări Oracle prin paginare

[Copiază linkul]
Postat pe 20.09.2017 09:52:47 | | |

Interogările de paginare sunt folosite mult în dezvoltarea proiectului, iar când vrei să sortezi datele după dată, există multe date duplicate.

Această problemă apare deoarece valoarea datei nu este unică în date.

Știm

Interogarea de paginare a Oracle nu efectuează nicio operațiune de sortare, Oracle citește datele eligibile din blocul de date secvențial și le returnează clientului.

Algoritmul de sortare al Oracle nu este stabil, adică, pentru datele egale de cheie, acest algoritm nu garantează că datele egale de cheie vor menține ordinea înainte de sortare după ce algoritmul finalizează sortarea.

Soluția la această problemă este adăugarea unei coloane unice la final, cum ar fi cheia primară, pentru a rezolva problema.



sau






Precedent:Permiteți-mi să vă recomand câteva proxy-uri IP străine utile.
Următor:.net/c# pentru a trimite descărcări de programe prin email cu atașamentele
 Proprietarul| Postat pe 25.09.2017 16:00:51 |
Diferența dintre rownum și row_number() în Oracle
http://www.itsvse.com/thread-4107-1-1.html
(Sursa: Arhitect)
 Proprietarul| Postat pe 25.09.2017 16:02:34 |
Un rownum este alocat unui rând după unde filtrarea condiției și înainte de orice ordine prin sau agregare. În același timp, rownum-ul va fi incrementat doar atunci când este atribuit unui rând. Valoarea inițială a rownumului este 1. Rownum nu se mai schimbă după ce a fost generat în interogare:
selectează * din emp unde ROWNUM <= 5 ordine prin sal desc;
Scopul acestei afirmații este de a returna informațiile celor mai bine plătiți 5 angajați, dar conform principiului rownum, rownum a fost generat înainte de ordine, astfel încât această afirmație nu joacă rolul de top 5, sintaxa corectă fiind următoarea:
select * de la (select * din ordinea EMP prin sal desc) unde ROWNUM <= 5;
Disclaimer:
Tot software-ul, materialele de programare sau articolele publicate de Code Farmer Network sunt destinate exclusiv scopurilor de învățare și cercetare; Conținutul de mai sus nu va fi folosit în scopuri comerciale sau ilegale, altfel utilizatorii vor suporta toate consecințele. Informațiile de pe acest site provin de pe Internet, iar disputele privind drepturile de autor nu au legătură cu acest site. Trebuie să ștergi complet conținutul de mai sus de pe calculatorul tău în termen de 24 de ore de la descărcare. Dacă îți place programul, te rugăm să susții software-ul autentic, să cumperi înregistrarea și să primești servicii autentice mai bune. Dacă există vreo încălcare, vă rugăm să ne contactați prin e-mail.

Mail To:help@itsvse.com