CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  基础类

插入数据时的排序问题?

楼主xiepoor1(xiepoor1)2005-12-09 15:32:44 在 MS-SQL Server / 基础类 提问

我从一个表中插入数据到另一个表中  
   
   
  insert   into   a  
  select   *   from   #b  
   
  a和#b的数据的顺序不一样?  
   
  问题点数:20、回复次数:12Top

1 楼brooks105(羔羊 )回复于 2005-12-09 15:37:53 得分 0

create   table   a   (id   int,   name   varchar(10))  
  insert   a  
  select   1,'y'  
  create   table   b   (name   varchar(10),id   int)  
  insert   b  
  select   'x',2  
   
  insert   into   a  
  select   id,name   from   b  
   
  select   *   from   a  
   
  id                     name                
  -----------   ----------    
  1                       y  
  2                       x  
   
  (所影响的行数为   2   行)  
  Top

2 楼lsqkeke(可可)回复于 2005-12-09 15:43:29 得分 0

是一样的!     :)Top

3 楼xiepoor1(xiepoor1)回复于 2005-12-09 15:46:14 得分 0

当数据量很大时,比如有几万条。  
   
  插入的结果一样,但默认的排序是不一样的。  
   
  你们可以试一个数据量大的情况Top

4 楼lsqkeke(可可)回复于 2005-12-09 15:55:00 得分 0

字段前后的顺序不一样?      
  那得研究研究!  
  你刚碰到过?  
  Top

5 楼nononono(null,null)回复于 2005-12-09 16:02:19 得分 0

因为表记录的存储顺序(可以理解为select无order时的顺序)与插入顺序无关,你查询时用order   by决定需要什么顺序。如果一定要存入的顺序,就增加一个自增列。Top

6 楼lsqkeke(可可)回复于 2005-12-09 16:07:03 得分 0

哦   我理解成字段在记录中的顺序了!  
  原来是单条记录的顺序哦!   现在知道原由了Top

7 楼xiepoor1(xiepoor1)回复于 2005-12-09 16:13:30 得分 0

是的,我的两个表中都有自增的id,  
   
  插入完后,目的表的结果,不是按id由大到小的顺序排的。Top

8 楼xiepoor1(xiepoor1)回复于 2005-12-09 16:15:47 得分 0

select   *   from   a  
   
  a的结果中的id是由小到大的。  
   
  insert   into   b  
  select   *   from   a  
   
  select   *   from   b  
  b的结果中的id   不是   由小到大的。  
  Top

9 楼xiepoor1(xiepoor1)回复于 2005-12-09 16:39:01 得分 0

有自增列还是不行呀?  
   
  是不是应该这样呢?  
   
  insert   into   b  
  select   *   from   a  
  order   by   idTop

10 楼nononono(null,null)回复于 2005-12-09 16:42:36 得分 12

如果a表有自增列就用order   by,b表的自增列要自动生成,类似如下:  
   
  insert   into   b   (fd2,fd3,fd4...)   select   fd2,fd3,fd4...   from   a   order   by   fd1  
  Top

11 楼xiepoor1(xiepoor1)回复于 2005-12-09 16:54:49 得分 0

还是不明白:  
   
  我的结果中  
  select   fd2,fd3,fd4...   from   a    
  跟  
  select   fd2,fd3,fd4...   from   a   order   by   fd1  
   
  查出的排序结果是一样的,  
   
   
  insert   into   b   (fd2,fd3,fd4...)   select   fd2,fd3,fd4...   from   a    
  order   by   fd1  
   
  加不加order   by   fd1对于  
  select   *   from   b   的结果确不一样。  
   
  这是为什么?  
   
   
   
  Top

12 楼kolosi(小丑巴其)回复于 2005-12-09 17:10:35 得分 8

SQL的表默认是无序的,查询的时候都是按照第一个字段排序,你表1和表2的结构不通,所以要想和表1排序一样的话,就要加order   by  
  如果想要表里记录的顺序按你的要求的话,给表加个索引就行了。Top

相关问题

  • 通过Select插入数据时排序的问题
  • 怎样取消SQL Server2000往表里插入数据时的自动排序?
  • 临时表插入数据
  • 当数据库的排序规则设成SQL_Latin1_General_CP1_CI_AI时,从查询分析器或Web插入中文都是乱码,不知是什么原因
  • 直接插入排序
  • 插入数据
  • 插入数据
  • 各位兄弟帮忙,急!!对CListCtrl排序后,再重新插入数据显示错误!!
  • 想存储数据(100个左右),经常删除插入查找,不排序,用哪一个容器?
  • asp插入数据时候出错。。。

关键词

  • 排序
  • 字段
  • 数据
  • 顺序
  • fd
  • 表
  • 插入
  • 增列
  • bselect
  • aselect

得分解答快速导航

  • 帖主:xiepoor1
  • nononono
  • kolosi

相关链接

  • SQL Server类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo