当前位置: 代码迷 >> Oracle开发 >> 关于Oracle记要随机排序
  详细解决方案

关于Oracle记要随机排序

热度:67   发布时间:2016-04-24 07:19:45.0
关于Oracle记录随机排序
有一张表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;

------解决方案--------------------
探讨
有一张表TableName1,字段个数为8,有下列语句:

SQL code

SELECT * FROM TableName1
ORDER BY 1;


在oracle中,这么写表示按照第1个字段排序;1为第一个字段的索引(当然,不能超过字段索引最大值);也就是说,不管我order哪一个字段索引,这里的排序方式都不会超过8种;

然而,在执行下列语句时:

SQL c……

------解决方案--------------------
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))截取整数部分
  相关解决方案