oracle select order by 的记录顺序

密码测试 2009-12-13 05:23:40
drop table test_olap;
-- Create table
create table TEST_OLAP
(
CLASS NUMBER(1),
NAME VARCHAR2(100),
SCORE NUMBER(4,1) default 0
);

delete from test_olap;
insert into test_olap (class, name,score)values(2, 'b2', 34);
insert into test_olap (class, name,score)values(3, 'b3', 34);
commit;
select t.class, t.name, t.score
from test_olap t
where t.class > 1
order by t.score;
查询结果:
class name score
3 b3 34.0 --后插入的结果排在前面
2 b2 34.0

接下来:
delete from test_olap;
insert into test_olap (class, name, score) values (3, 'b3', 34);
insert into test_olap (class, name, score) values (2, 'b2', 34);
commit;
select t.class, t.name, t.score
from test_olap t
where t.class > 1
order by t.score;
查询结果:
class name score
2 b2 34.0 --后插入的结果排在前面
3 b3 34.0

为什么在排序的时候,后插入数据库的记录会排在前面呢?
...全文
201 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
密码测试 2009-12-15
  • 打赏
  • 举报
回复
drop table test_olap;
-- Create table
create table TEST_OLAP
(
CLASS NUMBER(1),
NAME VARCHAR2(100),
SCORE NUMBER(4,1) default 0
);

delete from test_olap;
insert into test_olap (class, name,score)values(1, 'b1', 34);
insert into test_olap (class, name,score)values(2, 'b2', 34);
insert into test_olap (class, name,score)values(3, 'b3', 34);
insert into test_olap (class, name,score)values(4, 'b4', 34);
insert into test_olap (class, name,score)values(5, 'b5', 34);
commit;

select t.class, t.name, t.score
from test_olap t
where t.class > 0
order by t.score;

查询结果:
class name score
1 b1 34.0
2 b2 34.0
5 b5 34.0
4 b4 34.0
3 b3 34.0

多几条测试数据测试,果然是乱序的。谢谢楼上的回答,结贴了。
wh62592855 2009-12-13
  • 打赏
  • 举报
回复
ORACLE默认是不保证任何排序的
显示出来结果的顺序就是读取数据的顺序

虽然你这里加了ORDER BY
可是由于两条记录的SCORE的值是相同的
所以ORDER BY并起不了什么作用
crazylaa 2009-12-13
  • 打赏
  • 举报
回复
1楼说的对,但相同的值,你可以按照rowid来排。一般后插入的值rowid那个串会比前面的大。
ACMAIN_CHM 2009-12-13
  • 打赏
  • 举报
回复
[Quote]为什么在排序的时候,后插入数据库的记录会排在前面呢?[/Quote]

ORACEL中的记录存储是根本没有顺序的! 当你插入一条记录的时候,ORACLE会帮助你找到一个适合的block 来存储这个记录。至于这个BLOCK是以前删除记录留下的,还是新扩展的就由ORACLE自行决定了。

17,082

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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