临时表排序问题

maggie3256 2010-01-27 05:16:52
写入临时表的数据是经过order by排序后的,但发现从临时表里查出来后的数据排列顺序跟写入的顺序不一致,怎么才能一致呢,求高人指点!
...全文
141 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
shabble 2010-01-28
  • 打赏
  • 举报
回复
我也遇到过,不过对我的查询也没影响,就没管
feixianxxx 2010-01-27
  • 打赏
  • 举报
回复
[code=SQL]/*------------------------------问题描述----------------------------------------

*如何按insert的先后排序存储数据??????????

*现在有一张表,希望能够按数据操作时的insert顺序排序,

*比如:最先insert的排在前面,后insert的排在后面

*/

1:如果表中有聚集索引,那么是不可能实现的,因为数据会自动按照聚集索引排序



2:如果表中没有聚集索引,数据表是以堆集结构存储的。和你的默认字符集又关联.数据库存放和取出的顺序没有一定的规律的,可能两次取出的顺序都不一样。



--这里解决方法:加一個時間字段,設定default value = getdate(),建一个clustered索引,以这个字段为第一个字段。

create table test (value int,n int)

insert test values (1,2)

insert test values (3,3)

insert test values (2,4)

--添加默认字段

alter table test add [datetime] datetime default getdate()

--为该字段加聚集索引

create clustered index cl_in_date on test([datetime])



[code]
http://blog.csdn.net/feixianxxx/archive/2010/01/25/5255858.aspx
cxmcxm 2010-01-27
  • 打赏
  • 举报
回复
表的物理顺序与插入记录的先后无关,与聚集索引有关.
所有要保证查询的先后顺序,查询语句必须加order by
流氓兔 2010-01-27
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 fredrickhu 的回复:]
SQL code2000的话select*,(selectcount(1)from tbwhere id<=t.id)from tb t
[/Quote]
Study
Mr_Nice 2010-01-27
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 fredrickhu 的回复:]
SQL code2000的话select*,(selectcount(1)from tbwhere id<=t.id)from tb t
[/Quote]

o
路过,学习...
--小F-- 2010-01-27
  • 打赏
  • 举报
回复
2000的话
select *,(select count(1) from tb where id<=t.id) from tb t
--小F-- 2010-01-27
  • 打赏
  • 举报
回复
与版本有关系的 如果是2005就不存在这个问题了
SQL77 2010-01-27
  • 打赏
  • 举报
回复
最好用ROW_NUMBER


子查询


SELECT *,(SELECT COUNT(*) FROM TB WHERE ID<=T.ID) FROM TB T
SQL77 2010-01-27
  • 打赏
  • 举报
回复
http://topic.csdn.net/u/20100117/17/66c82525-d148-4bb4-a523-a1fbe23bc2e9.html?seed=736200064&r=62791845#r_62791845
黄_瓜 2010-01-27
  • 打赏
  • 举报
回复
给出你的数据,和你想要的排序结果

27,580

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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