请问insert into select 插入数据后顺序与源数据顺序不同

rain1989317 2011-11-09 09:26:49
各位大大,现在我有两张表 A(id,code,name) B(id,code,name) 两张表的id列都是不为空的自增列
使用insert into B(code,name) select code,name from A 之后
为什么插入B的数据顺序与A的数据顺序不同呢
...全文
2662 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
ningweidong 2011-11-09
  • 打赏
  • 举报
回复
你查询的时候order by一下
他插入的顺序没关系
--小F-- 2011-11-09
  • 打赏
  • 举报
回复
存储是按照物理地址排序 查询的时候不加ORDER BY 也是按照物理地址排序

所以要按照顺序排列 需要ORDER BY排序。 这样才是按照逻辑排序。
黄_瓜 2011-11-09
  • 打赏
  • 举报
回复
select 出来的顺序 不是它内部存储的顺序
黄_瓜 2011-11-09
  • 打赏
  • 举报
回复
因为存储就是无序的,差的时候直接拷贝也是无序的
zlp321002 2011-11-09
  • 打赏
  • 举报
回复
DBCC CHECKIDENT (A,RESEED,新的起始值)

DBCC CHECKIDENT (B,RESEED,新的起始值)
Mr_Nice 2011-11-09
  • 打赏
  • 举报
回复
我这儿是一样的 sql server 2008 R2

CREATE TABLE #A(id INT IDENTITY(1,1),code INT,NAME VARCHAR(10))
GO

INSERT INTO #A(code,name)
SELECT 123,'A'
UNION ALL
SELECT 456,'B'
UNION ALL
SELECT 789,'C'

CREATE TABLE #B(id INT IDENTITY(1,1),code INT,NAME VARCHAR(10))
GO

insert into #B(code,name)
select code,name from #A


SELECT * FROM #A
/*
id code NAME
1 123 A
2 456 B
3 789 C*/

SELECT * FROM #B
/*
id code NAME
1 123 A
2 456 B
3 789 C*/

DROP TABLE #A
DROP TABLE #B
jyh070207 2011-11-09
  • 打赏
  • 举报
回复
如果想将a的id插入到b中,打开SET IDENTITY_INSERT 选项,
如想指定数据存储的顺序,在插入时指定order by
快溜 2011-11-09
  • 打赏
  • 举报
回复
insert into B(code,name) select code,name from A order by id
jwdream2008 2011-11-09
  • 打赏
  • 举报
回复

34,870

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧