我写了一个sql语句,后来加上rownum以后,其他条件不变,发现加上rownum以后整个数据的顺序发生变化了,不知道为什么,请高手指教?
我的sql语句如下:
select tbl_dbscd.* from tbl_dbscd where f_id in (60,61,62,63,64,65,53,36,37,38,39,40)
查询出来以后的数据顺序和括号里面的顺序成反的了,就是顺序是 40,39,38,37,53,65,64,63,62,61,60
但是我执行 select rownum,tbl_dbscd.* from tbl_dbscd where f_id in (60,61,62,63,64,65,53,36,37,38,39,40)语句以后这个顺序就完全打乱了,不知道是按照什么排列的了,顺序是 40,53,60,61,62,63,64,65,37,38,39。
谁能告诉我原因啊,谢谢
我的sql语句如下:
select tbl_dbscd.* from tbl_dbscd where f_id in (60,61,62,63,64,65,53,36,37,38,39,40)
查询出来以后的数据顺序和括号里面的顺序成反的了,就是顺序是 40,39,38,37,53,65,64,63,62,61,60
但是我执行 select rownum,tbl_dbscd.* from tbl_dbscd where f_id in (60,61,62,63,64,65,53,36,37,38,39,40)语句以后这个顺序就完全打乱了,不知道是按照什么排列的了,顺序是 40,53,60,61,62,63,64,65,37,38,39。
谁能告诉我原因啊,谢谢
你说的好像不对吧,刚才我把rownum放在后面了,结果还是和放到前面的一样 。
40,53,60,61,62,63,64,65,37,38,39这个顺序
而每块中存放的行数是按你所存取的数据字节大小来计算的,在存放时,oracle会自由的分配空间
这里涉及的东西挺多的,也只了解这么一点,但一句话:在表中如果不是IOT或聚簇等表,它的排序都是杂乱无章章的。
--f_id in (60,61,62,63,64,65,53,36,37,38,39,40)
order by instr(','||'60,61,62,63,64,65,53,36,37,38,39,40'||',' , ','||id||',')