So erhalten Sie die Zeilennummer aus ausgewählten Zeilen in Oracle

8

Ich wähle einige Zeilen aus der Datenbank aus, z. B.:

%Vor%

Ergebnis:

%Vor%

Ich muss die Zeilennummer für den Zweig B5 erhalten. Erwarteter Wert ist "5"

Kann jemand bitte vorschlagen, wie Sie dies in der Abfrage implementieren?

    
Tushar 28.01.2013, 07:58
quelle

4 Antworten

25

Es gibt keine inhärente Reihenfolge für eine Tabelle. Also, die Zeilennummer selbst ist eine bedeutungslose Metrik.

Sie können jedoch die Zeilennummer einer Ergebnismenge ermitteln, indem Sie die ROWNUM psuedocolumn oder ROW_NUMBER() analytische Funktion, die leistungsfähiger ist.

Da es für eine Tabelle keine Reihenfolge gibt, benötigen beide eine explizite ORDER BY-Klausel, um zu funktionieren.

%Vor%

oder Verwenden der analytischen Abfrage

%Vor%

Ihre Syntax where name is like ... ist falsch, es besteht keine Notwendigkeit für den IS, also habe ich ihn entfernt.

Die ORDER BY-Anweisung basiert hier auf einer binären Sortierung. Wenn also eine Verzweigung mit einem anderen als B beginnt, können die Ergebnisse unterschiedlich sein, z. B. b ist größer als B .

    
Ben 28.01.2013 08:03
quelle
10

Sie können es einfach tun

%Vor%

Dies weist die Zeilennummer zu, wenn die Zeilen abgerufen werden (also natürlich keine garantierte Reihenfolge).

wenn Sie zuerst bestellen wollten:

%Vor%     
DazzaL 28.01.2013 08:02
quelle
3

Ich denke mit

%Vor%

ist ein einfacher Weg; Sie sollten einfache Anführungszeichen in der LIKE-Anweisung hinzufügen. Wenn Sie row_number() verwenden, sollten Sie over (order by 'sort column' 'asc/desc') hinzufügen, zum Beispiel:

%Vor%     
boyce 28.01.2013 10:03
quelle
2

Die folgende Abfrage hilft, die Zeilennummer in oracle zu erhalten,

%Vor%     
Srinivasan.S 06.10.2014 15:06
quelle

Tags und Links