扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
oracle select order by 的记录顺序
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
为什么在排序的时候,后插入数据库的记录会排在前面呢?
ORACLE默认是不保证任何排序的
显示出来结果的顺序就是读取数据的顺序
虽然你这里加了ORDER BY
可是由于两条记录的SCORE的值是相同的
所以ORDER BY并起不了什么作用
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
多几条测试数据测试,果然是乱序的。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者