Αυτό το άρθρο είναι ένα άρθρο καθρέφτη της αυτόματης μετάφρασης, κάντε κλικ εδώ για να μεταβείτε στο αρχικό άρθρο.

Άποψη: 14301|Απάντηση: 1

[Πηγή] Η διαφορά μεταξύ rownum και row_number() στην Oracle

[Αντιγραφή συνδέσμου]
Δημοσιεύτηκε στις 25/9/2017 4:00:21 μ.μ. | | |
row_number()over(partition by col1 order by col2) σημαίνει ταξινόμηση σύμφωνα με col2 εντός της ομάδας και η τιμή που υπολογίζεται από αυτήν τη συνάρτηση αντιπροσωπεύει τον αριθμό παραγγελίας (το διαδοχικό μοναδικό εντός της ομάδας) μετά την εσωτερική ταξινόμηση κάθε ομάδας. Η διαφορά από το rownum είναι ότι όταν χρησιμοποιείτε το rownum για ταξινόμηση, προσθέτετε ένα κακό rownum στο σύνολο αποτελεσμάτων και στη συνέχεια το ταξινομείτε, ενώ το row_number() ταξινομεί πρώτα και στη συνέχεια υπολογίζει τον αριθμό σειράς αφού συμπεριλάβει τον όρο ταξινόμησης.

1. Rownum στο μαντείο

Χρησιμοποιείται για την αρίθμηση των σειρών που επιστρέφονται από το ερώτημα, η πρώτη σειρά που επιστρέφεται έχει 1, η δεύτερη σειρά είναι 2 και ούτω καθεξής, αυτό το ψευδοπεδίο μπορεί να χρησιμοποιηθεί για τον περιορισμό του συνολικού αριθμού σειρών που επιστρέφονται από το ερώτημα και ο αριθμός σειρών δεν μπορεί να έχει πρόθεμα με το όνομα οποιουδήποτε πίνακα.

1. rownum για συνθήκες ερωτήματος ίσες με μια συγκεκριμένη τιμή

Εάν θέλετε να βρείτε τον πρώτο μαθητή στον πίνακα μαθητών, μπορείτε να χρησιμοποιήσετε rownum=1 ως συνθήκη. Ωστόσο, εάν θέλετε να βρείτε τις πληροφορίες του δεύτερου μαθητή στον πίνακα μαθητών, δεν μπορείτε να βρείτε τα δεδομένα χρησιμοποιώντας rownum=2. Επειδή το rownum ξεκινά από το 1, αλλά οι φυσικοί αριθμοί πάνω από το 1 θεωρούνται ψευδείς όταν το rownum κρίνεται ίσο με ναι, επομένως είναι αδύνατο να βρεθεί rownum = n(n>1 φυσικοί αριθμοί).




2. Rownum για συνθήκες ερωτήματος μεγαλύτερες από μια συγκεκριμένη τιμή

Εάν θέλετε να βρείτε τις εγγραφές από τη δεύτερη σειρά και μετά, όταν χρησιμοποιείτε το rownum>2 δεν μπορεί να βρει τις εγγραφές, μπορείτε να χρησιμοποιήσετε τις ακόλουθες μεθόδους υποερωτήματος για να λύσετε το πρόβλημα. Σημειώστε ότι ο αριθμός σειράς στο δευτερεύον ερώτημα πρέπει να έχει ψευδώνυμο, διαφορετικά η εγγραφή δεν θα βρεθεί, επειδή ο αριθμός σειράς δεν είναι στήλη ενός πίνακα και εάν δεν υπάρχει ψευδώνυμο, είναι αδύνατο να γνωρίζουμε εάν ο αριθμός σειράς είναι μια στήλη του δευτερεύοντος ερωτήματος ή μια στήλη του κύριου ερωτήματος.




3. rownum για συνθήκες ερωτήματος μικρότερες από μια συγκεκριμένη τιμή

Εάν θέλετε να βρείτε την προηγούμενη εγγραφή της τρίτης εγγραφής, μπορείτε να λάβετε δύο εγγραφές όταν χρησιμοποιείτε το rownum<3. Προφανώς, το rownum πιστεύει ότι η συνθήκη του rownum < n (φυσικός αριθμός (n>1) είναι αληθής, οπότε μπορείτε να βρείτε την εγγραφή.




4. Rownum και παραγγελία

Ο αριθμός σειράς στην Oracle είναι ο αριθμός ακολουθίας που δημιουργείται κατά την ανάκτηση των δεδομένων, επομένως εάν θέλετε να καθορίσετε τα δεδομένα σειράς rowmun για τα καθορισμένα ταξινομημένα δεδομένα, πρέπει να το προσέξετε.




ΌΝΟΜΑ ΑΝΑΓΝΩΡΙΣΤΙΚΟΎ ROWNUM
---------- ------ ---------------------------------------------------
3 200003 Λι Σαν
2 200002 Γουάνγκ Ερ
1 200001 Ζανγκ Γι
4 200004 Ζάο Σι

Μπορεί να φανεί ότιΤο rownum δεν είναι ένας αριθμός ακολουθίας που δημιουργείται από τη στήλη ονόματος。 Το σύστημα εκχωρεί τον αριθμό της σειράς εγγραφών με τη σειρά με την οποία εισήχθησαν και το rowid εκχωρείται επίσης με τη σειρά. Για την επίλυση αυτού του προβλήματος, πρέπει να χρησιμοποιηθούν δευτερεύοντα ερωτήματα




ΌΝΟΜΑ ΑΝΑΓΝΩΡΙΣΤΙΚΟΎ ROWNUM
---------- ------ ---------------------------------------------------
1 200003 Λι Σαν
2 200002 Γουάνγκ Ερ
3 200001 Ζανγκ Γι
4 200004 Ζάο Σι

2. Oracle row_number ()

1、row_number() over (παραγγελία από col_1[,col_2 ...])
Σύμφωνα με col_1[,col_2 ...] Ταξινόμηση, επιστρέφει το ταξινομημένο σύνολο αποτελεσμάτων και επιστρέφει μια διαφορετική τιμή για κάθε γραμμή.

2、row_number() over (κατάτμηση κατά col_n[,col_m ...] σειρά κατά col_1[,col_2 ...])
Πρώτον, σύμφωνα με col_n[,col_m ... και στη συνέχεια σε κάθε ομαδοποίηση σύμφωνα με το col_1[,col_2 ...] Ταξινόμηση (αύξουσα) και τέλος επιστροφή του ταξινομημένου συνόλου αποτελεσμάτων

Παρουσία Oracle row_number().

1. Χρησιμοποιήστε τη συνάρτηση row_number() για αρίθμηση, όπως



Αρχή: Ταξινόμηση κατά PSD πρώτα και μετά την ταξινόμηση, αριθμήστε κάθε κομμάτι δεδομένων.

2. Ταξινομήστε την παραγγελία με αύξουσα σειρά τιμής και ταξινομήστε κάθε εγγραφή με τον ακόλουθο κωδικό:



3. Μετρήστε τον αριθμό των παραγγελιών που έκανε πρόσφατα κάθε πελάτης.




4. Όταν χρησιμοποιείτε λειτουργίες ανοίγματος παραθύρων όπως το over, η εκτέλεση της ομαδοποίησης και της ταξινόμησης στο over είναι μεταγενέστερη από την εκτέλεση του "where, group by, order by".



Ο παραπάνω κώδικας εκτελεί πρώτα τον όρο where και στη συνέχεια αριθμεί κάθε εγγραφή μετά την εκτέλεση.

3. Η διαφορά μεταξύ row_number () και rownum

Κατά την ταξινόμηση με rownum, προσθέτετε ένα κακό rownum στο σύνολο αποτελεσμάτων και στη συνέχεια το ταξινομείτε, ενώ το row_number() ταξινομεί πρώτα και στη συνέχεια υπολογίζει τον αριθμό γραμμής αφού συμπεριλάβει τον όρο ταξινόμησης.




Προηγούμενος:Είναι το Xunlei Wanke Cloud crowdfunding Taobao σε χρήστες ως μαϊμούδες αυτή τη φορά;
Επόμενος:Η Oracle υποβάλλει ερωτήματα σε όλες τις στήλες ενός πίνακα και τους τύπους δεδομένων τους
Αποκήρυξη:
Όλο το λογισμικό, το υλικό προγραμματισμού ή τα άρθρα που δημοσιεύονται από το Code Farmer Network προορίζονται μόνο για μαθησιακούς και ερευνητικούς σκοπούς. Το παραπάνω περιεχόμενο δεν θα χρησιμοποιηθεί για εμπορικούς ή παράνομους σκοπούς, άλλως οι χρήστες θα υποστούν όλες τις συνέπειες. Οι πληροφορίες σε αυτόν τον ιστότοπο προέρχονται από το Διαδίκτυο και οι διαφορές πνευματικών δικαιωμάτων δεν έχουν καμία σχέση με αυτόν τον ιστότοπο. Πρέπει να διαγράψετε εντελώς το παραπάνω περιεχόμενο από τον υπολογιστή σας εντός 24 ωρών από τη λήψη. Εάν σας αρέσει το πρόγραμμα, υποστηρίξτε γνήσιο λογισμικό, αγοράστε εγγραφή και λάβετε καλύτερες γνήσιες υπηρεσίες. Εάν υπάρχει οποιαδήποτε παραβίαση, επικοινωνήστε μαζί μας μέσω email.

Mail To:help@itsvse.com