如何改变oracle中select的结果的默认顺序(不加order by)? 100
oracle11g当sql语句中不加orderby的时候,好像是按rowid的顺序返回结果的。我也看过一些相关的文档,oracle的官方意思就是不加orderby,就不保...
oracle 11g
当sql语句中不加order by的时候,好像是按rowid的顺序返回结果的。
我也看过一些相关的文档,oracle的官方意思就是不加order by,就不保证输出的顺序。
那么,问题来了:
如果现在我select XXX,一组结果出来,顺序是.......A....B.....
那么接下来我做什么操作,再做同样一句select,怎么才能让结果变成....B...A.....
这个问题我试验了一些操作,比如update,insert,delete一两条数据啊,都不能做到改变两个结果的相对顺序!!!
请回答问题的人自己先做个试验,如果能稳定重复,最终悬赏200分~~~
注意:rowid不是主键,好像是oracle的数据地址。
select XXX不包含order by
还有:操作中请勿修改表的主键。 展开
当sql语句中不加order by的时候,好像是按rowid的顺序返回结果的。
我也看过一些相关的文档,oracle的官方意思就是不加order by,就不保证输出的顺序。
那么,问题来了:
如果现在我select XXX,一组结果出来,顺序是.......A....B.....
那么接下来我做什么操作,再做同样一句select,怎么才能让结果变成....B...A.....
这个问题我试验了一些操作,比如update,insert,delete一两条数据啊,都不能做到改变两个结果的相对顺序!!!
请回答问题的人自己先做个试验,如果能稳定重复,最终悬赏200分~~~
注意:rowid不是主键,好像是oracle的数据地址。
select XXX不包含order by
还有:操作中请勿修改表的主键。 展开
6个回答
展开全部
删除掉原记录,重新插入,通常显示的位置会后移。
这要看B前面是否有可用的块,如果有重新插入的记录仍然在B的前面,可以通过插入足够数量的记录将B前面的可用块占用,然后就会出现在B的后面。
如果不考虑开销,也可以将A删除后重建表,最后插入A。
一个可以重复出现的例子
CREATE TABLE TEST (NAME VARCHAR2(10));
INSERT INTO TEST VALUES('A');
INSERT INTO TEST VALUES('B');
INSERT INTO TEST VALUES('C');
SELECT * FROM TEST;
DELETE FROM TEST WHERE NAME='A';
INSERT INTO TEST VALUES('A');
SELECT * FROM TEST;
DROP TABLE TEST PURGE;
展开全部
rowid是标识行的唯一性,格式:data object number(6个字符)+relative file number(3个字符)+block number(6个字符)+row number(3个字符)
数据库的理论基础就是集合论,本质上就是无序的,不使用order by(子查询或查询)是不能保证顺序,你把数据不停无序删除再加回估计就能看到这个现象,但大部分时候都是在磁盘上的次序,这跟数据库怎么读数据有关
数据库的理论基础就是集合论,本质上就是无序的,不使用order by(子查询或查询)是不能保证顺序,你把数据不停无序删除再加回估计就能看到这个现象,但大部分时候都是在磁盘上的次序,这跟数据库怎么读数据有关
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
嵌套使用rowid ,我试过了,应该可以
例如:
select b.rowid ,b.*
from ( select rowid,a.* from 表a ) b
order by b.rowid desc
例如:
select b.rowid ,b.*
from ( select rowid,a.* from 表a ) b
order by b.rowid desc
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以明确的告诉你,在不加order by的时候,select的顺序是不能被保证的。所以你只能另改你的需求设计了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
oracle数据库是没有默认排序的
要排序必须加上order by
lz的这种情况是一种巧合
因为oracle是按块进行读取数据的
如果数据按顺序存储,则可能使读取出来的数据是按顺
要排序必须加上order by
lz的这种情况是一种巧合
因为oracle是按块进行读取数据的
如果数据按顺序存储,则可能使读取出来的数据是按顺
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询