select aCode,
aName,
aDispOrder
FROM AAA
ORDER BY aDispOrder
现在表数据里,aDispOrder=‘9999’的记录很多,我想问的就是aDispOrder=‘9999’的这些记录检索出来按什么排序的?
按数据插入的先后顺序还是按rowid?
aName,
aDispOrder
FROM AAA
ORDER BY aDispOrder
现在表数据里,aDispOrder=‘9999’的记录很多,我想问的就是aDispOrder=‘9999’的这些记录检索出来按什么排序的?
按数据插入的先后顺序还是按rowid?
楼上的回答错误~··
是按rowid 的 ,因为你已经加了个ORDER BY aDispOrder
TO #1楼,#2楼
我这边的现象是【不是按rowid】来排序的,正如2楼说的,ROWID本来就无序的
所以最终,我个人觉得应该是按数据插入顺序来的。如果大家有事实能够证明我的想法是错的,欢迎指出。
这些数据读取出来的时候,ORACLE将他们的排序方式,是根据BLOCK中的内存地址进行排序。我下面做一个例子--查询内存地址
SELECT ROWID,e.* FROM emp eAAAL+ZAAEAAAAAdAAA 7369 SMITH CLERK 800.00
AAAL+ZAAEAAAAAdAAB 7499 ALLEN SALESMAN 1600.00 300.00
AAAL+ZAAEAAAAAdAAC 7521 WARD SALESMAN 1250.00 500.00
AAAL+ZAAEAAAAAdAAD 7566 JONES MANAGER 2975.00
AAAL+ZAAEAAAAAdAAE 7654 MARTIN SALESMAN 1250.00 1400.00
AAAL+ZAAEAAAAAdAAF 7698 BLAKE MANAGER 2850.00
AAAL+ZAAEAAAAAdAAG 7782 CLARK MANAGER 2450.00
AAAL+ZAAEAAAAAdAAH 7788 SCOTT ANALYST 3000.00
AAAL+ZAAEAAAAAdAAI 7839 KING PRESIDENT 5000.00
AAAL+ZAAEAAAAAdAAJ 7844 TURNER SALESMAN 1500.00 0.00
AAAL+ZAAEAAAAAdAAK 7876 ADAMS CLERK 1100.00
AAAL+ZAAEAAAAAdAAL 7900 JAMES CLERK 950.00
AAAL+ZAAEAAAAAdAAM 7902 FORD ANALYST 3000.00
AAAL+ZAAEAAAAAdAAN 7934 MILLER CLERK 1300.00 --不查询内存地址
SELECT e.empno,e.ename,e.job,e.sal,e.comm FROM emp e7369 SMITH CLERK 800.00
7499 ALLEN SALESMAN 1600.00 300.00
7521 WARD SALESMAN 1250.00 500.00
7566 JONES MANAGER 2975.00
7654 MARTIN SALESMAN 1250.00 1400.00
7698 BLAKE MANAGER 2850.00
7782 CLARK MANAGER 2450.00
7788 SCOTT ANALYST 3000.00
7839 KING PRESIDENT 5000.00
7844 TURNER SALESMAN 1500.00 0.00
7876 ADAMS CLERK 1100.00
7900 JAMES CLERK 950.00
7902 FORD ANALYST 3000.00
7934 MILLER CLERK 1300.00
create table test (id number, fdate date);insert into test values (1, sysdate);
commit;select id, to_char(fdate, 'yyyymmdd hh24:mi:ss') fdate,rowid from test order by id; ID FDATE ROWID
---------- ------------------------- ------------------
1 20100621 11:57:55 AAAWFZAAEAAAzh8AAA
1 20100621 11:57:57 AAAWFZAAEAAAzh8AAB
1 20100621 11:58:00 AAAWFZAAEAAAzh8AAC
1 20100621 11:58:03 AAAWFZAAEAAAzh8AAD
1 20100621 11:58:06 AAAWFZAAEAAAzh8AAE
1 20100621 11:58:08 AAAWFZAAEAAAzh8AAF
1 20100621 12:00:10 AAAWFZAAEAAAzh8AAM
1 20100621 11:58:13 AAAWFZAAEAAAzh8AAH
1 20100621 11:58:15 AAAWFZAAEAAAzh8AAI
1 20100621 12:00:02 AAAWFZAAEAAAzh8AAJ
1 20100621 12:00:04 AAAWFZAAEAAAzh8AAK
1 20100621 12:00:07 AAAWFZAAEAAAzh8AAL
1 20100621 11:58:11 AAAWFZAAEAAAzh8AAG既不按插入时间,也不按rowid,真是乖了,期待高手解释一下。
如果只有insert,这或许为真,可是如果后期有不断delete, update操作,很多块地址是可以复用的。
那么读出的顺序与你的入库的顺序以及rowid的顺序就可能不一致了。顺序是依靠orderby来保证的。
-- 不同的SQL语句,检索方法会有很大的区别,
-- select ,a,b,c ...字段排放的顺序不同,也会有很大的差异,关键看你的需求去orader by 才是王道!
-- 不要只看rowid 怎么、怎么的....
小日本问我,我也搞不定~~~
现在我就回答随机顺序了~~~~~~~~~~