So finden Sie die Zeilennummer des Datensatzes?
Betrachten Beispiel Tabelle unten
ProductDetailNo ProductDescription
224 Apples
225 Tomatoes
226 Potatoes
Wie Liste ich die Nummer der Zeile für eine ausgewählte Zeile wie unten ?
RowNo ProductDetailNo Product Description
2 225 Tomatoes
Verwendung von row_number() in meiner Abfrage nur gibt 1 zurück, immer für einen einzelnen Datensatz kein mater, was die logische Zeile in der Datenbank.
Danke, Damien.
row_number() verwendet die Ergebnisse Ihrer Abfrage, und zahlen Sie. Wenn die Abfrage nur eine Zeile zurückgegeben, dann row_number() wird immer 1 sein. msdn.microsoft.com/en-us/library/ms186734.aspx
Danke für die info Brandon, aber es muss einen Weg
Es ist ein Weg. Hinzufügen (oder verwenden) einen einzigartigen Schlüssel zu den abgefragten Tabelle, und verwenden Sie den eindeutigen Schlüssel zurück-Verweis die Folge. Wenn ProductDetailNo ist einzigartig, man könnte es als einen back-Verweis auch.
Sprechen Sie über ein id-Feld?
Die Zeilen in der Datenbank, wird eine ungeordnete Haufen oder Zeilen, die Sie können, um in die Abfrage mit
Danke für die info Brandon, aber es muss einen Weg
Es ist ein Weg. Hinzufügen (oder verwenden) einen einzigartigen Schlüssel zu den abgefragten Tabelle, und verwenden Sie den eindeutigen Schlüssel zurück-Verweis die Folge. Wenn ProductDetailNo ist einzigartig, man könnte es als einen back-Verweis auch.
Sprechen Sie über ein id-Feld?
Die Zeilen in der Datenbank, wird eine ungeordnete Haufen oder Zeilen, die Sie können, um in die Abfrage mit
order by
. Es gibt also keine "logische" Zeile Nummer dort Abfragen. Was willst du mit der Zeilen-Nummer? Vielleicht gibt es andere Möglichkeiten, das zu tun, was Sie wollen.InformationsquelleAutor Zo Has | 2012-01-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
versuchen, diese
wenn Sie irgendwelche Fehler bitte angeben
ja innere select ausgeführt wird für alle Datensätze, denn wir brauchen Zeilennummer für jeden Datensatz. dann können wir die Ergebnisse filtern, mit einer äußeren Abfrage
da die Zeilennummern sind praktisch angelegt, die Laufzeit. deshalb brauchen wir innere wählen Sie.. wenn Sie brauchen Sie haben, um einige Trigger zum speichern der Reihe von zahlen in einer Spalte, so dass Sie leicht das Ergebnis bekommen, das ohne Nummerierung der Zeilen zur Laufzeit.
Die innere select kann oder auch nicht haben Zugriff auf alle Zeilen - es wird sicherlich brauchen, um herauszufinden, was Zeilennummer zugewiesen werden, aber es kann in der Lage sein, um festzustellen, dass mit anderen Mitteln - der ganze Punkt von SQL ist, Sie sagen es, , was Sie wollen, nicht wie es geht, und es dann versucht zu bestimmen, die optimale Vorgehensweise.
InformationsquelleAutor Shoaib Shaikh
Bitte Überprüfen Sie Diese
InformationsquelleAutor Renju Vinod
Was ist das?
Gut, um die Anzahl der Dinge, die Sie haben, um Sie alle zu kennen. Es ist die beste Lösung für Ihre Frage, wie es jetzt ist.
Natürlich, der Wert, der zurückgegeben wird, durch
ROW_NUMBER()
könnte auch anders sein, zwischen jeder Ausführung der Abfrage, da keineORDER BY
(ist das noch gültig?)Ja, ohne
ORDER BY
, Reihenfolge der zurückgegebenen Datensätze nicht definiert.InformationsquelleAutor Sergio Tulentsev
Gibt es keine zugehörige Zeilennummer für eine Zeile in der Tabelle.
ROW_NUMBER()
gibt Sie die Nummer der Zeile, die nur innerhalb einer bestimmten Ergebnismenge. So ist es das erwartete Ergebnis erhalten Sie stets1
wenn das ResultSet enthält nur 1 Datensatz. Wenn Sie möchten, eine Zeile, Tabelle, schema umfassen sollte so etwas wie eine auto-incrementIDENTITY
Spalte.InformationsquelleAutor bobbymcr
InformationsquelleAutor Gopu
Die Nummer der Zeile, die Sie erhalten, ist von der Anzahl der Zeilen des Ergebnisses. d.h. wenn das Ergebnis hat nur ein Tupel, das die Zeile nicht. immer 1.
Bekommen Zeilennummer die gesamte Tabelle, sollten Sie einen extra-Attribut, ein RowNo mit auto increment zu Ihrem Tisch.
Hoffe, das hilft, aber möglicherweise SQL hat noch bessere Lösung für Sie!
InformationsquelleAutor Vinayak Garg