Ich glaube die Antwort ist nein. Und suche nach einem Gegenbeispiel, um zu zeigen, dass die Reihenfolge der Ausgabe nicht garantiert ist, wenn keine ORDER BY-Klausel vorhanden ist.
Betrachten Sie:
create table #order (orderId int primary key clustered
, customerId int not null -- references customer(customerId)
, orderDateTIme datetime not null)
insert into #order values (1, 100, '2009-01-01')
insert into #order values (2, 101, '2009-01-02')
insert into #order values (3, 102, '2009-01-03')
insert into #order values (4, 103, '2009-01-04')
insert into #order values (5, 100, '2009-01-05')
insert into #order values (6, 101, '2009-01-06')
insert into #order values (7, 101, '2009-01-07')
insert into #order values (8, 103, '2009-01-08')
insert into #order values (9, 105, '2009-01-09')
insert into #order values (10, 100, '2009-01-10')
insert into #order values (11, 101, '2009-01-11')
insert into #order values (12, 102, '2009-01-12')
insert into #order values (13, 103, '2009-01-13')
insert into #order values (14, 100, '2009-01-14')
insert into #order values (15, 100, '2009-01-15')
insert into #order values (16, 101, '2009-01-16')
insert into #order values (17, 102, '2009-01-17')
insert into #order values (18, 101, '2009-01-18')
insert into #order values (19, 100, '2009-01-19')
insert into #order values (20, 101, '2009-01-20')
select * from #order
-- Ergebnisse in PK-Reihenfolge aufgrund des gruppierten Primärschlüssels
select orderId, CustomerId, orderDateTime
, row_number() over (partition by customerId order by orderDateTime) RN
from #order
Auf MS SQL Server 2005 hat die Ausgabeordnung zwei Eigenschaften:
-
Die Reihen für jeden
customerId
sind im Ergebnis zusammenhängend. -
Row_number()
ist fortlaufend innerhalb jedes customerId.
Mein Verständnis ist, dass diese beiden Eigenschaften nicht garantiert sind, wenn keine explizite ORDER BY-Klausel vorhanden ist. Ich suche nach einem Beispiel, in dem diese Eigenschaften nicht zutreffen, das nicht durch eine ORDER BY-Klausel erzwungen wird, sondern einfach ein Ergebnis davon ist, wie MS SQL Server zufällig arbeitet. Entwickeln Sie bei Bedarf gerne Ihre eigene Tabellendefinition, Indizes, usw. in Ihrem Beispiel.
Oder falls ich falsch liege, dürfen Sie mir einen Verweis auf eine Quelle geben, die zeigt, dass diese Reihenfolgen garantiert sind, auch ohne eine explizite ORDER BY-Klausel.