有一张表TableName1,字段个数为8,有下列语句:
- SQL code
SELECT * FROM TableName1 ORDER BY 1;
在oracle中,这么写表示按照第1个字段排序;1为第一个字段的索引(当然,不能超过字段索引最大值);也就是说,不管我order哪一个字段索引,这里的排序方式都不会超过8种;
然而,在执行下列语句时:
- SQL code
SELECT * FROM TableName1 ORDER BY DBMS_RANDOM.value;
按照理解;函数DBMS_RANDOM.value表示产生一个随机数;执行原理与上述语句相同,排序方式不会超过8种,但是,实际上随机排序方式却超过了8种。
-->
有些不解,再此求教。
------解决方案--------------------
这种是把DBMS_RANDOM.value当成一列来处理了。相当于
SELECT t.*,DBMS_RANDOM.value FROM TableName1 t
ORDER BY DBMS_RANDOM.value;
------解决方案--------------------
------解决方案--------------------
- SQL code
select * from emp order by trunc(dbms_random.value(1,8));--dbms_random.value(1,8)是取1-8之间的随机数 有小数--trunc(dbms_random.value(1,8))截取整数部分