SQL> select * from (select * from emp order by dbms_random.value) t where rownum=1; EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO ---------- ---------- --------- ---------- -------------- ---------- ---------- ---------- 7876 ADAMS CLERK 7788 23-5月 -87 1100 20SQL> select * from (select * from emp order by dbms_random.value) t where rownum=1; EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO ---------- ---------- --------- ---------- -------------- ---------- ---------- ---------- 7934 MILLER CLERK 7782 23-1月 -82 100 10
已得正解: select city_id, PROVINCE_ID, REGION_ID from (select city_id, city_desc, PROVINCE_ID, REGION_ID from CT_D_GEO_CITY order by dbms_random.value ) where rownum=1; 可是order by dbms_random.value 是什么逻辑?
已得正解: select city_id, PROVINCE_ID, REGION_ID from (select city_id, city_desc, PROVINCE_ID, REGION_ID from CT_D_GEO_CITY order by dbms_random.value ) where rownum=1; 可是order by dbms_random.value 是什么逻辑? 打乱顺序,相当于随机取一行。。
我们正常会以为,是随机产生一个数。。但实际上是为每一行产生一个随机数。。如果随机数恰巧与rr相同的情况下,就会满足条件。如果没有碰到随机数与rr相同则什么都查不出来。。
所以就会出现结果集个数不一致的情况。。
---------- ---------- --------- ---------- -------------- ---------- ---------- ----------
7876 ADAMS CLERK 7788 23-5月 -87 1100 20SQL> select * from (select * from emp order by dbms_random.value) t where rownum=1; EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- -------------- ---------- ---------- ----------
7934 MILLER CLERK 7782 23-1月 -82 100 10
select city_id, PROVINCE_ID, REGION_ID
from (select city_id, city_desc, PROVINCE_ID, REGION_ID
from CT_D_GEO_CITY order by dbms_random.value
)
where rownum=1;
可是order by dbms_random.value 是什么逻辑?
select city_id, PROVINCE_ID, REGION_ID
from (select city_id, city_desc, PROVINCE_ID, REGION_ID
from CT_D_GEO_CITY order by dbms_random.value
)
where rownum=1;
可是order by dbms_random.value 是什么逻辑?
打乱顺序,相当于随机取一行。。