Wie verwenden Sie OFFSET und Fetch ohne Order by in SQL Server

Möchte ich mit OFFSET und Fetch in meiner SQL server 2012 query.Aber ohne jede Ordnung durch.Ich kann keine Bestellung durch.Weil meine Sortierreihenfolge verloren.
Wie kann ich mit OFFSET und Fetch ohne order by-und Zeilennummer und wo in meiner Abfrage?
Mein 2 wählen Sie Tabellen haben dieselbe Struktur.

INSERT INTO @TempTable [some columns]  
select [some columns] from table1 order by col1 
INSERT INTO @TempTable [same columns]
select [some columns] from table2 order by col2
select * from @TempTable OFFSET 20 ROWS FETCH NEXT 50 ROWS ONLY

Dieser Abfrage syntax Fehler bei OFFSET Schlüsselwort.

  • OFFSET-FETCH angewendet wird, nur auf geordneten Mengen. In einer SQL-Tabelle es gibt keine inhärente Ordnung und Sie müssen ORDER BY wenn Sie angeben möchten, ein. Also, was Sie wollen, ist einfach nicht möglich.
  • Kann ich verwenden, um durch 1 ?
  • Ja, natürlich, obwohl ich nicht verstehe, was Sie meinen, weil meine Sortierreihenfolge verloren. Es gibt keine inhärente Sortierreihenfolge in der Tabelle verloren.
  • Sie müssen angeben, dass eine ORDER BY da es keine Garantie für die aktuelle Bestellung wird immer die Reihenfolge in der die Ergebnisse zurückgegeben werden.
  • ORDER BY-1 ist NICHT der Bestellung durch den skalaren Wert 1, wäre es die Bestellung, indem Sie die Ordnungszahl der position. Das heißt, es würde um von der ersten Spalte in der Ergebnismenge. Dies ist eine schreckliche Angewohnheit, um. Wenn Sie Positionen öffnen Sie sich bis zu Zukunft Fehler bei der Reihenfolge der Spalten in der select-änderungen und Sie nicht aktualisieren Sie die Ordnungszahl Referenzen.
  • ORDER BY: "Die Reihenfolge, in der Zeilen in einem ResultSet zurückgegeben werden, sind nicht garantiert, es sei denn, eine ORDER BY-Klausel angegeben ist."
  • Oder um es anders auszudrücken, wenn Sie nicht setzen etwas in @TempTable dass können Sie in einer ORDER BY, dann haben Sie schon "verloren" Ihre Sortierreihenfolge.
  • Könntest du nicht einfach eine Identität(1,1) - Spalte, um Ihre @temptable-definition verwendet werden, für die Bestellung?
  • Danke für die ganzen guides.Ich bearbeitet meine Frage, und jetzt wird aufgeräumt.
  • Keine @Me.Name .Meine Art verloren.
  • Nach Aussagen und Untersuchungen, habe ich meine Frage selbst beantwortet mit getestet Abfrage.Bitte Stimmen Sie bis und markieren nützliche Frage-und Antwort-wenn Sie das Gefühl nützlich war.Danke Jungs
  • Warum sollte die Sortierreihenfolge verloren, wenn mit identity(1,1)? Die identity-Spalte werden aufsteigend in der Reihenfolge, in der die Datensätze Hinzugefügt werden.
  • Wow.Ja! das ist großartig! mit dieser Art kann ich ignorieren row_number.Es ist besser und schneller.Sie können meine Antwort und schreiben Sie Ihre Antwort mit temp-Tabelle Struktur.Kann ich temp-Tabelle die variable mit identity-Spalte?
  • Yep, die Sie verwenden können, table-variable mit identity-Spalte. Zumindest habe ich so getan, sql 2012, weiß nicht, ob es immer verfügbar war.

Schreibe einen Kommentar