대답은 아니요이라고 생각합니다. 그리고 카운터 예을 찾고 order by 절이 없으면 출력 순서가 보장되지 않음을 보여줍니다.row_number()를 사용할 때 출력 순서에 따라 달라질 수 있습니까
고려 :
각
customerId
에 대한 행되는 출력 연속 : MS SQL 서버 2005create 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 -- Results in PK order due to clustered primary key select orderId, CustomerId, orderDateTime , row_number() over (partition by customerId order by orderDateTime) RN from #order
는, 출력 순서는 두 가지 속성이 있습니다.
Row_number()
은 각각 고객 번호 내에서 순차적입니다.
명백히 order by 절이 없으면이 두 속성이 보장되지 않습니다. 위의 속성이 order by 절에 의해 강제되지 않는 예제를 찾고 있는데, MS SQL Server가 어떻게 작동하는지에 대한 결과입니다. 필요한 경우 자신의 예제에서 자체 테이블 정의, 색인 등을 자유롭게 개발할 수 있습니다.
내가 잘못하면 명시 적 order by 절이 없어도 이러한 순서가 보장된다는 참조에 대한 링크가 보장됩니다.
+1을 작성하여 스크립트를 작성하면 모두가 그랬 으면 좋겠어! –