Wie wähle ich alle Spalten aus einer Tabelle sowie zusätzliche Spalten wie ROWNUM aus?

73

In Oracle ist es möglich, eine SELECTAnweisung auszuführen, die die Zeilennummer als Spalte in Ihrer Ergebnismenge zurückgibt.

Zum Beispiel,

SELECT rownum, column1, column2 FROM table

kehrt zurück:

rownum        column1        column2
1 Joe Smith
2 Bob Jones

Aber ich möchte nicht jede Spalte von Hand angeben. Ich möchte so etwas tun wie:

select rownum,* from table
Rownum        Spalte1        Spalte2        Spalte3        Spalte4
1 Joe Smith 1 2
2 Bob Jones 3 4

Irgendwelche Ideen?

ntsue
quelle

Antworten:

128

Qualifizieren Sie das * mit dem Namen der Tabelle:

select rownum, table.* from table
Dave Costa
quelle
7

Daves Antwort ist großartig. Ich möchte nur hinzufügen, dass dies auch möglich ist, indem der Platzhalter als erste Spalte platziert wird:

select *,rownum from table

Funktioniert, aber das Folgende wird nicht:

select rownum,* from table

Ich habe auf MySQL getestet.

gaborous
quelle
16
" unter MySQL getestet " - ohne Verwendung des Tabellennamens ( table.*) funktioniert dies nicht unter Oracle, für das diese Frage gestellt wurde.
a_horse_with_no_name
-7

Leider glaube ich nicht, dass es einen Weg gibt, dies zu tun. Am einfachsten ist es wahrscheinlich, sich mit einer Inline-Tabelle von id, count (*) und einer äußeren select-Anweisung mit sich selbst zu verbinden

Ziyi Wang
quelle