使用ORDER BY INSERT INTO SELECT - 可以假设行插入顺序

时间:2015-01-14 00:43:52

标签: tsql sql-server-2012

考虑以下代码:

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

我从select语句中看到的结果是:

第一行:1,ANG

第二行:2,CAR

第三行:3,YAB

可以安全地假设这种情况总是如此(假设您在此练习中是系统中唯一的用户)。

我试图弄清楚当SELECT部分​​有一个ORDER BY子句时,INSERT语句是否对它插入行的顺序提供某种保证。我知道通常这不重要,但是当涉及INDENTITY列时它会有所不同。

1 个答案:

答案 0 :(得分:1)

是的,手动插入语句将按顺序处理,后面的插入将具有更大的标识值。

如果插入是从另一个表中选择,那么您需要订购选择 插入符合选择的顺序。
在这种情况下,如果活动上存在平局,则您的选择可能会有变化。