2015-01-14 2 views
0

이 코드 고려 행 삽입 순서에 대해 할 수 있습니다INSERT INTO SELECT BY ORDER 함께 - 가정

CREATE TABLE dbo.t2 (code varchar(100) not null primary key, nam varchar(100) not null, active DATETIME) 
insert into dbo.t2 (code, nam, active) values ('YAB', 'Yabbie', '20140101') 
insert into dbo.t2 (code, nam, active) values ('CAR', 'Carp', '20130101') 
insert into dbo.t2 (code, nam, active) values ('ANG', 'Angel Fish', '20110101') 

CREATE TABLE dbo.t1 (id INT IDENTITY PRIMARY KEY, code varchar(100) not null) 
insert into dbo.t1 (code) select code from dbo.t2 order by active 

select * from dbo.t1 order by id 

내가 선택 문에서 볼 수있는 결과는 다음과 같습니다

첫 번째 행 : 1, ANG

번째 행 : 2, CAR

번째 행 : 3 YAB

항상이 경우에 해당한다고 가정하는 것이 안전합니까? (이 연습에서는 사용자가 시스템의 유일한 사용자라고 가정).

나는 SELECT 부분에 ORDER BY 절이있을 때 행을 삽입하는 순서에 대해 INSERT 문이 보증을 제공하는지 알아 내려고합니다. 일반적으로 이것은 중요하지 않지만 INDENTITY 열이 관련되어있을 때는 차이를 만들 수 있습니다.

+2

행이 삽입되는 순서가 중요한 이유는 무엇입니까? 'SELECT' 문은 어쨌든'ORDER BY'가없는 보장 된 순서를 갖지 않습니다. –

+0

@MikeD. 그는 id에 정렬하고 삽입 순서를 나타낼 수 있기 때문입니다. – Paparazzi

+0

@MikeD - ORDER BY가없는 SELECT에는 보장 된 주문이 없다는 점에 감사드립니다. 나는 여기서 약간 다른 것을 이야기하고있다. –

답변

1

예 수동 삽입 명령문은 순서대로 처리되며 이후 삽입은 더 큰 신원 값을가집니다.

삽입이 다른 테이블의 선택 이었으면 선택을 주문해야합니다.
삽입은 선택 순서를 따르게됩니다.
이 경우 활성 상태의 동점이있을 경우 선택 항목에 변형이있을 수 있습니다.

+0

. 예, 제 경우에는 묶인 "활성"값에 대한 비 결정적 순서가있는 것이 좋습니다. –